Trotz setModal, der JDialog ist nicht modal ?

Status
Nicht offen für weitere Antworten.

PELLE

Bekanntes Mitglied
1.Klasse: Hier wird

Code:
 MyDialog mywindow = new MyDialog(Fenster);

in der actionPerformed Methode weiter unten im code aufgerufen!


Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;
import javax.swing.WindowConstants;
import javax.swing.filechooser.FileFilter;
import javax.swing.ButtonGroup.*;
import java.io.*;
import java.text.*;
import java.util.Date;
import javax.swing.plaf.basic.BasicComboBoxRenderer;
import javax.swing.border.Border;
import javax.swing.filechooser.*;
import java.util.*;
import java.util.StringTokenizer;
import java.util.Arrays;
public class MainWindow extends JFrame
{

   public MainWindow(){

     super("Kaufmannsrechnung 2008");
     UIManager.put("swing.boldMetal", Boolean.FALSE);
     JTabbedPane jtp = new JTabbedPane();
     RechnungPanel RP = new RechnungPanel();
     jtp.addTab("<html><font size=5>Rechnungen schreiben</font size></html>", RP);
     add(jtp);
   }

   class RechnungPanel extends JPanel implements ActionListener
   {
      JLabel informationLB      = new JLabel("<html>[b]Produkt information:[/b]</html>");
      JButton buttonRechnung = new JButton("<html>Rechnung schreiben
</html>");
   

    public RechnungPanel()
      {
         setLayout(null);         
         add(buttonRechnung);
         buttonRechnung.setBounds(845,0,144,64);

       
         
         buttonRechnung.addActionListener(this);

         

      }  //................................. KONSTRUKTOR ENDE ............................................ //
     

      

      public void actionPerformed(ActionEvent e)
      {
    	  if(e.getSource().equals(buttonRechnung))
          {
    		   MyDialog mywindow = new MyDialog(Fenster);
          }
    	  
    	  
      }
   }

   public static void main(String args[])
   {
      MainWindow Fenster = new MainWindow();
      Fenster.setSize(900,650);
      Fenster.setLocationRelativeTo(null);
      Fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      Fenster.setResizable(false);
      Fenster.setVisible(true);
   }
}




2.Klasse: Hier wurde die Klasse konstruiert:

Code:
import javax.swing.*;
import org.jvnet.substance.SubstanceLookAndFeel;
import org.jvnet.substance.button.ClassicButtonShaper;
import org.jvnet.substance.painter.WaveGradientPainter;
import org.jvnet.substance.theme.SubstanceAquaTheme;

public class MyDialog extends JDialog
{
	static final long serialVersionUID = 1L;
	
	public MyDialog()
	{	         
         SubstanceLookAndFeel slnf = new SubstanceLookAndFeel();
         SubstanceLookAndFeel.setCurrentTheme(new SubstanceAquaTheme());
         SubstanceLookAndFeel.setCurrentButtonShaper(new ClassicButtonShaper());
         SubstanceLookAndFeel.setCurrentGradientPainter(new WaveGradientPainter());  
         try
         {                 
          UIManager.setLookAndFeel(slnf);  
          JDialog.setDefaultLookAndFeelDecorated(true);
         }
         catch (Exception b)
         {
           b.printStackTrace();
         }
         this.setSize(300,300);
	 this.setLocationRelativeTo(null);
         this.setVisible(true);
         this.setModal(true);		
	}	
	
}

Warum verhält sich das kleine mywindow nicht modal zu dem JFrame der in der 1. Klasse zuerst aufgerufen wird, danach auf button druck wird das obige:
Code:
 MyDialog mywindow = new MyDialog();
ausgeführt und das mywindow ist sichtbar aber eben nicht model??
 

kleiner_held

Top Contributor
1. du meinst sicherlich modal und nicht model richtig?
2. ein Dialog kann nur modal sein, wenn du ihm im Constructor den owner (Frame oder Dialog) mitgibst, zu dem er sich modal verhalten soll.

PS: ich habe die Frage erst nach mehrmaligem Lesen verstanden, bitte gehe beim Fragestellen nicht davon aus, das ein Leser hier das gleiche Wissen ueber deinen Projektaufbau hat wie du.
 

PELLE

Bekanntes Mitglied
Warum verhält sich das kleine mywindow nicht modal...

Wer wird sich denn an einem Verdreher aufhalten ;-)

ok nur was ist der owner der JDialog instanz "mywindow"

-->der name der 1. Klasse: MainWindow.class wo folgendes aufgerufen wird:
Code:
MyDialog mywindow = new MyDialog();

also so geschrieben
Code:
public MyDialog(MainWindow)
{

}
oder ist der owner der JDialog instanz "mywindow"

--> die instanz "Fenster" die in der Main methode der 1. Klasse: MainWindow.class aufgerufen wird ? also so:

Code:
public MyDialog(Fenster)
{

}
 
S

SlaterB

Gast
natürlich ein Objekt, keine Klasse,
JFrame oder JWindow oder so

public MyDialog(JFrame frame)
{
super(frame);
..
}
 

PELLE

Bekanntes Mitglied
SlaterB hat gesagt.:
natürlich ein Objekt, keine Klasse,
JFrame oder JWindow oder so

public MyDialog(JFrame frame)
{
super(frame);
..
}


Was kommt dann in den Konstruktor parameter dieser Zeile???

Code:
MyDialog mywindow = new MyDialog(JFrame frame);
dasselbe wie oben?

Diese instanz "frame" muss die schon wo mit new erschaffen sein?
 
S

SlaterB

Gast
> Warum verhält sich das kleine mywindow nicht modal zu dem JFrame der in der 1. Klasse zuerst aufgerufen wird

das impliziert doch, dass du schon ein JFrame hast,
warum ein neues erzeugen wenn du ein vorhandenes blockieren willst?

das vorhandene JFrame musst du übergeben als Parameter
 

PELLE

Bekanntes Mitglied
SlaterB hat gesagt.:
> Warum verhält sich das kleine mywindow nicht modal zu dem JFrame der in der 1. Klasse zuerst aufgerufen wird

das vorhandene JFrame musst du übergeben als Parameter

Code:
public MyDialog(JFrame Fenster) 
	{	         
		 super(Fenster);

so ? Fenster ist wie gesagt die instanz die in der main methode erzeugt wird. obiger Code bringt auch kein Fehler nur

dieser code bringt fehler

Code:
MyDialog mywindow = new MyDialog( Fenster);
?
 
G

Guest

Gast
Ändere mal die Reihenfolge dieser zwei Anweisungen.
Könnte die Ursache sein.
Code:
this.setVisible(true); 
this.setModal(true);
 

PELLE

Bekanntes Mitglied
SlaterB hat gesagt.:
> dieser code bringt fehler

WELCHEN FEHLER (laut schrei) ;)

sorry jungs bin heute verpeilt:

"Fenster can not be resolved" mehr steht in der console/Problems bei eclipse nicht

Ich poste morgen code heute ist spät...
 

Tobias

Top Contributor
Jo, das heißt, das die Variable FENSTER in dem Codeblock in dem du MyDialog instanziierst nicht existiert. Das ist was, was wir nicht lösen können, weil wir deinen Code nicht kennen.

mpG
Tobias
 

PELLE

Bekanntes Mitglied
Tobias hat gesagt.:
Das ist was, was wir nicht lösen können, weil wir deinen Code nicht kennen.
mpG
Tobias

Hallo Tobias,

ganz oben in meinem 1. Post habe ich die 1. Klasse gerippt eingefügt, da 1300 Zeilen hier einfügen unsinn wäre.

Vielen Dank für eure Hilfe!
 
S

SlaterB

Gast
dsu musst dein fenster (nicht die Klasse sondern das Object, zum xten Mal!) verfügbar machen
Code:
RechnungPanel RP = new RechnungPanel(this); 

....

class RechnungPanel extends JPanel implements ActionListener 
   { 
       private Fenster fenster;

    public RechnungPanel(Fenster fenster) {
        this.fenster = fenster;
   } 
}


...

MyDialog mywindow = new MyDialog(fenster);
 

PELLE

Bekanntes Mitglied
ich bekomme immer FEnster cannot be resolved to a type bei deinem obigen code. Mal schaun ob ich net zuviel gerippt habe vom code ich poste später nochmals sorry... War heute am arbeitsplatz jetzt daheim wo der aktuellere code gelagert ist ;-)
 
S

SlaterB

Gast
in meinem Code kommt 'FEnster' nirgendwo vor,

außerdem müsstest du eine Zeile nennen
 

PELLE

Bekanntes Mitglied
ok das ist die aktuelle code fenster struktur von Klasse 1:

Code:
import java.awt.Color;
import java.awt.Font;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import javax.swing.*;
import java.io.FileFilter;
import java.lang.System;
import javax.swing.text.MaskFormatter;
import org.jvnet.substance.button.ClassicButtonShaper;
import org.jvnet.substance.SubstanceLookAndFeel;
import org.jvnet.substance.theme.SubstanceAquaTheme;
import org.jvnet.substance.painter.WaveGradientPainter;

public class MainWindow extends JFrame
{    static final long serialVersionUID = 1L;     
  

   public MainWindow()
   {
      super("bla");   
      
     
              
      RechnungsPanel  RP = new RechnungsPanel();
     
      
      JTabbedPane jtp = new JTabbedPane();     
      
      jtp.addTab("<html><font size=5>Rechung</font size></html>", RP);
            
      
          
   }  //...................................... KONSTRUKTOR ENDE ........................................ //
   
   class RechnungsPanel extends JPanel implements ActionListener
   {      
	  

      public RechnungsPanel()
      {   
    	  
    	  JButton payBT = new JButton("bla");           
          
          payBT.addActionListener(this);
        
         
         
      }  //...................................... KONSTRUKTOR ENDE ........................................ //
    
      
      public void actionPerformed(ActionEvent e)
      {             
  
	       if(e.getSource().equals(payBT))
	       { 	              
	        MyDialog  mywindow = new MyDialog(fenster);          
	       }
      }
  } 

     
   public static void main(String args[])
   {
     
      MainWindow Fenster = new MainWindow();
      Fenster.setSize(960,565);
      Fenster.setLocationRelativeTo(null);
      Fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      Fenster.setResizable(false);
      Fenster.setVisible(true);
    
   }
}

in meinem Code kommt 'FEnster' nirgendwo vor,

außerdem müsstest du eine Zeile nennen

Das war doch nur ein Schreibfähler von mir...

eine Zeile nennen? Na überall wo ich Fenster oder das objekt fenster schrieb war dieses in eclipse unterstrichen mit fenster oder Fenster can not be resolved
 
S

SlaterB

Gast
da du vorher oft 'Fenster', also den Klassennamen, benutzt hast, ist eine Frage nach der Schreibweise bei dir immer berechtigt,
-------

du hast also eine Zeile des von mir vorgeschlagenen Codes übernommen
(MyDialog mywindow = new MyDialog(fenster); )
den Rest aber nicht, nicht mal geschrieben, dass du nicht weißt wo du es einfügen sollst oder ähnliche Begründungen

was soll ich davon halten?
was soll ich dazu sagen außer nochmal: tue es, vertraue der Macht! ;)

die Klasse Fenster scheint es bei dir gar nicht zu geben,
also z.B.

Code:
RechnungPanel RP = new RechnungPanel(this); 

....

class RechnungPanel extends JPanel implements ActionListener 
   { 
       private MainWindow mWindow;

    public RechnungPanel(MainWindow mWindow) {
        this.mWindow= mWindow;
   } 
}


...

MyDialog mywindow = new MyDialog(mwindow);
 

PELLE

Bekanntes Mitglied
Code:
RechnungPanel RP = new RechnungPanel(this); 

....

class RechnungPanel extends JPanel implements ActionListener 
   { 
       private MainWindow mWindow;

    public RechnungPanel(MainWindow mWindow) {
        this.mWindow= mWindow;
   } 
}


...

MyDialog mywindow = new MyDialog(mwindow);
[/quote]



Diese Anweisung brauch ich nicht läuft auch so...

// this.mWindow= mWindow;

und hier hast du dich verschrieben sollte wohl

MyDialog mywindow = new MyDialog(mWindow); heißen ;-)

ich habe übringens nie behauptet das Fenster eine Klasse sei:

--> die instanz "Fenster" die in der Main methode der 1. Klasse: MainWindow.class aufgerufen wird ? also so:

SUPER vielen Dank dir hat geklappt. Du bist auch einer der Forenperlen hier ;-) (das wollt ich nur mal sagen...)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Erste Schritte Java 8 Tutorials trotz Java 13 Allgemeine Java-Themen 22
T Input/Output Konsole gibt trotz printf keine Umlaute aus Allgemeine Java-Themen 17
V Applet trotz Ausnahme blockiert Allgemeine Java-Themen 0
G Nullpointer trotz vorherigem Nullcheck Allgemeine Java-Themen 2
R Gleiche Objektreferenz trotz clone()? Allgemeine Java-Themen 12
D JSF Primefaces Chatproblem trotz 3.4 Allgemeine Java-Themen 13
S Erste Schritte Exception beendet Schleife nicht - Methode macht trotz throw weiter? Allgemeine Java-Themen 9
T SecurityException trotz signierten JAR? Allgemeine Java-Themen 11
I HashMap key wird nicht erkannt trotz überschriebener equals/hashCode Methode Allgemeine Java-Themen 6
C Schleife mit leerem Anweisungsblock wird trotz erfüllter Bedingung nicht verlassen Allgemeine Java-Themen 9
B Input/Output Datei noch geöffnet trotz Close Allgemeine Java-Themen 4
M Webstart Exception trotz signierten JARs Allgemeine Java-Themen 3
U DLLs werden nicht gefunden trotz Pfad: Allgemeine Java-Themen 4
R java in der konsole nicht gefunden trotz jre,jdk,home und path Allgemeine Java-Themen 4
D Java Heap error trotz anpassungen mit -xmx Allgemeine Java-Themen 4
S Fenster "verschwindet" nicht, trotz setVisible(false); Allgemeine Java-Themen 22
M Radianwert wiederholt sich trotz unterschiedlicher zufälliger Koordinaten Allgemeine Java-Themen 6
P not enough space for object heap - Trotz mehr RAM? Allgemeine Java-Themen 6
J Wie die gleichzeitige Ausführung mehrerer Tasks trotz Multithreading verhindern? Allgemeine Java-Themen 2
B Trotz fat_jar NoClassDefFounError Allgemeine Java-Themen 4
H2SO3- Date "18.11.2002 20:02:33" trotz Locale.GERMAN nic Allgemeine Java-Themen 9
T Security-Exception trotz gegebener Rechte? Allgemeine Java-Themen 3
Saxony Blocked GUI trotz Thread(s) Allgemeine Java-Themen 2
G Leere Datei mit PrintWriter trotz flush und close Allgemeine Java-Themen 8
X Softwareverkauf trotz Lizens Allgemeine Java-Themen 5
G Trotz Generics Cast-Fehler! Allgemeine Java-Themen 5
R ConcurrentModificationException trotz synchronized? Allgemeine Java-Themen 12
H NullPointerException trotz Abfangen von null? Allgemeine Java-Themen 9
A Kein finally ausführen trotz verlassen des try blocks? Allgemeine Java-Themen 14
G JFileChooser öffnet sich nicht im Browser ( trotz Signatur ) Allgemeine Java-Themen 10
R Bild wird trotz allem einfach nicht angezeigt. - AHHHHH!!!!! Allgemeine Java-Themen 30
M Bild wird trotz MediaTracker nicht oder nur halb gezeichnet Allgemeine Java-Themen 2
kodela JDialog zeigt Text nicht an Allgemeine Java-Themen 5
L Exception/Error auf JDialog umleiten Allgemeine Java-Themen 2
T Code durch eigenes Frame pausieren (ähnlich JDialog) Allgemeine Java-Themen 4
X Modalität von JDialog nachträglich in JFrame implementieren? Allgemeine Java-Themen 8
S JDialog Daten ins JFrame übergeben Allgemeine Java-Themen 5
T JDialog vor Hauptfenster beim Start Allgemeine Java-Themen 5
B gridbaglayout und modaler jdialog Allgemeine Java-Themen 7
C Speicherverbrauch von JDialog enorm Allgemeine Java-Themen 6
D Probleme mit Browserfenster und modaler JDialog Allgemeine Java-Themen 17
J JDialog Bild als Hintergrund Allgemeine Java-Themen 19
S visible prob mit JFrame und JDialog Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben