Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo, ich hocke hier gerade an folgendem Problem:
Code:
package test;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
public class Test extends JFrame{
private int zahl = 1;
private static final long serialVersionUID = -5666734745185765139L;
public Test(){
super("FRAME 1");
this.setSize(500,500);
this.addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
Test2 x2 = new Test2();
x2.setVisible(true);
// Unterbrechung !!!
zahl++;
System.out.println("Frame1: "+zahl);
}
public static void main(String args[]){
Test x = new Test();
x.setVisible(true);
}
public class Test2 extends JFrame{
private static final long serialVersionUID = 5452253290249880884L;
public Test2(){
super("FRAME 2");
this.setSize(300,300);
this.addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
zahl++;
System.out.println("Frame2: "+zahl);
}
});
}
}
}
wie im Quelltext angegeben, ich will erreich, dass der Frame1 "gesperrt" wird, und auf die Ausführung der Frame 2 wartet.
Nur this.wait(); leifert bei mir einen Fehler - wurde mich sehr freuen, wenn ich euch das Beispiel mal anschaut, mir einen Tipp, oder ein Stückchen Quellcode geben könntet :wink:
Also versteh mich nich falsch Wildcard, ich mein das so:
Wenn der JDialog blocken kann, warum dann nicht auch mein JFrame, wenn ich noch das nötige dazuschreibe?
Die Sache ist schwieriger als du denkst.
Die Frage ist, warum möchtest du das. Ein JDialog ist genau das gleiche wie ein JFrame mit 2 Unterschieden:
1. Er kann modal sein (den JFrame blockieren)
2. Er erzeugt keinen EIntrag in der Taskleiste
Sich gegenseitig blockierende Frames sind Anwender nicht gewöhnt, dafür verwendet man Dialoge.
Wenn der JDialog blocken kann, warum dann nicht auch mein JFrame, wenn ich noch das nötige dazuschreibe?
Er kann es - WENN du das nötige dazuschreibst. Das wirft aber leider andere Fragen auf:
1. Was ist "das nötige"?
2. Kann man es "dazuschreiben"?
3. Kannst du es dazuschreiben?
Wenn ein modaler Dialog aufgeht, passiert im Hintergrund eine ganze Menge - ein Fenster so "blockiert zu machen" ist nicht so trivial: Es muss zwar noch neu gezeichnet werden können, aber nicht mehr in den Vordergrund zu holen sein, keine Eingaben mehr annehmen... Du kannst dir natürlich im Quellcode von Diloag/JDialog ansehen, was dort in der "show()"-Methode passiert, und versuchen, das nachzubauen. Dann stellt sich aber schon Frage Nummer
4. Wozu?
Programmierer sind doch von Natur aus faul, oder nicht?
Warum also das Rad neu erfinden?
Ich rate dir auch dazu von JDialog zu erben! In deinem Fall erbst du ja auch von JFrame um dessen Methoden benutzen zu können...