Guten Morgen!
Ich habe schon seit längerem ein Problem mit JOptionPane und wollte mal fragen, ob ihr eine Idee habt.
Wenn ich JOptionPane benutze und dann das Fenster schließe, ist der Fokus nicht in dem Fenster wo ich ihn haben will bzw. ich komm in entsprechende Fenster garnicht mehr hinein.
Hab mal ein Beispiel dazu gemacht, damit ihr seht was ich meine:
Wenn ich jetzt das Programm ausführe... in Fenster 2 auf Show Message klicke -> Ok klicke und dann -> Close dann schließt sich das 2te Fenster aber Fenster 1 ist blockiert...
Und ich hätte das halt gerne so das ich beim Schließen des 2. Fensters wieder im ersten arbeiten kann.
In meiner größeren Anwendung verschwindet das Problem mit dem "falschen Fokus" in dem Moment wo ich JOptionPane auskommentiere...
Ich habe schon seit längerem ein Problem mit JOptionPane und wollte mal fragen, ob ihr eine Idee habt.
Wenn ich JOptionPane benutze und dann das Fenster schließe, ist der Fokus nicht in dem Fenster wo ich ihn haben will bzw. ich komm in entsprechende Fenster garnicht mehr hinein.
Hab mal ein Beispiel dazu gemacht, damit ihr seht was ich meine:
Java:
import java.awt.Dialog.ModalityType;
import javax.swing.SwingUtilities;
public class Main {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
A frame = new A();
frame.setSize(330,340);
frame.setLocation(350, 350);
frame.setVisible(true);
frame.setModal(true);
frame.setAlwaysOnTop(true);
frame.setModalityType(ModalityType.APPLICATION_MODAL);
}
});
}
}
Java:
import javax.swing.JDialog;
public class A extends JDialog {
private static final long serialVersionUID = 1L;
A()
{
this.setTitle("Fenster 1");
B frame = new B();
frame.setSize(230,240);
frame.setVisible(true);
frame.setModal(true);
frame.setLocationRelativeTo(null);
frame.setAlwaysOnTop(true);
frame.setModalityType(ModalityType.APPLICATION_MODAL);
}
}import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
public class B extends JDialog {
private static final long serialVersionUID = 1L;
private JButton button1;
private JButton button2;
B() {
this.setTitle("Fenster 2");
setLayout(new FlowLayout());
button1 = new JButton("Show Message");
button2 = new JButton("Close");
add(button1);
add(button2);
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(rootPane,
"Erfolg!", "Info",
JOptionPane.INFORMATION_MESSAGE);
}
});
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
});
}
}
Wenn ich jetzt das Programm ausführe... in Fenster 2 auf Show Message klicke -> Ok klicke und dann -> Close dann schließt sich das 2te Fenster aber Fenster 1 ist blockiert...
Und ich hätte das halt gerne so das ich beim Schließen des 2. Fensters wieder im ersten arbeiten kann.
In meiner größeren Anwendung verschwindet das Problem mit dem "falschen Fokus" in dem Moment wo ich JOptionPane auskommentiere...