Ich habe eine Frage zu nachfolgendem, selbstgeschriebenem Gewusel. Und zwar habe ich hier gleich zwei Probleme:
1. Warum schließt das Programm nicht, wenn ich im Dialog auf "Ja" klicke? Irgendwie wird in der main der boolsche Wert nicht übergeben und ich habe keine Ahnung warum.
2. Wie kriege ich es hin, dass das Dialog-Fenster über dem Hauptfenster liegt und das Hauptfenster für diese Dauer nicht benutzbar ist? Das Problem ist nämlich, dass ich von diesen YesNo-Dialogen so viele aufrufen kann, wie ich lustig bin, wenn ich das Fenster zu schließen versuche.
EDIT: Ok, ich habe die Antwort auf Frage 2 selbst gefunden. Ich muss Zeile 11 durch folgendes ersetzen:
[JAVA=11]super(parent, title, true);[/code]
Kann mir da jemand bitte helfen?
1. Warum schließt das Programm nicht, wenn ich im Dialog auf "Ja" klicke? Irgendwie wird in der main der boolsche Wert nicht übergeben und ich habe keine Ahnung warum.
2. Wie kriege ich es hin, dass das Dialog-Fenster über dem Hauptfenster liegt und das Hauptfenster für diese Dauer nicht benutzbar ist? Das Problem ist nämlich, dass ich von diesen YesNo-Dialogen so viele aufrufen kann, wie ich lustig bin, wenn ich das Fenster zu schließen versuche.
EDIT: Ok, ich habe die Antwort auf Frage 2 selbst gefunden. Ich muss Zeile 11 durch folgendes ersetzen:
[JAVA=11]super(parent, title, true);[/code]
Kann mir da jemand bitte helfen?
Java:
package solitaire;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class YesNoDialog extends JDialog {
boolean status = false;
public YesNoDialog(JFrame parent, String title, String question) {
setTitle(title);
JPanel text = new JPanel();
text.add(new JLabel(question));
getContentPane().add(text, BorderLayout.NORTH);
JPanel buttons = new JPanel();
JButton yesButton = new JButton("Ja");
buttons.add(yesButton);
yesButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
status = true;
returnStatus();
}
});
JButton noButton = new JButton("Nein");
buttons.add(noButton);
noButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
returnStatus();
}
});
getContentPane().add(buttons, BorderLayout.SOUTH);
pack();
setVisible(true);
}
public boolean returnStatus() {
return status;
}
}
public class Main extends JFrame{
public Main() {
super("Solitaire");
setSize(500, 400);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
setVisible(true);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
YesNoDialog beenden = new YesNoDialog(new JFrame(), "Beenden?", "Möchten Sie das Programm wirklich beenden?");
if (beenden.returnStatus()) {
dispose();
System.exit(0);
}
}
});
}
public static void main(String[] args) {
new Main();
}
}
Zuletzt bearbeitet: