Hallo Stefan.
Wenn der Benutzer die Applikation beendet erscheint eine
DialogBox
(JOptionPane) welche den Benutzer fragt, ob der die Anwendung
wirklich schließen will.
Ich möchte in diese DialogBox eine CheckBox einbauen
Wie bekommt man eine CheckBox (JCheckBox ?!) in die Dialogbox
Ein Blick in die Dokumentation der JOptionPane (http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/…)
verrät, dass man Ihr statt einer Textnachricht eine beliebige
Komponente zur Anzeige übergeben kann. Damit lässt sich dem
Dialog prima eine komplexere GUI-Komponente wie z.B. ein
selbstgebasteltes CheckBoxPanel unterschieben.
wie liest man den Status der CheckBox aus (angehakt oder nicht)???
Indem Du einen ActionListener an die JCheckBox hängst.
Müssig ist alle Theorie, also hier Butter bei die Fische:
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class CheckBoxPanel extends JPanel {
public CheckBoxPanel() {
JCheckBox chkNervMichNicht = new JCheckBox("In Zukunft nicht mehr fragen");
chkNervMichNicht.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Object eventSource = e.getSource();
if (eventSource instanceof JCheckBox) {
JCheckBox myCheckBox = (JCheckBox)eventSource;
if (myCheckBox.isSelected()) {
System.out.println("SPEICHERN: Nicht mehr nerven");
} else {
System.out.println("SPEICHERN: Weiter nerven");
}
}
}
});
this.setLayout(new GridBagLayout());
GridBagConstraints constraints = null;
constraints = new GridBagConstraints();
constraints.gridx = 0;
constraints.gridy = 0;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.weightx = 0;
constraints.weighty = 0;
constraints.ipadx = 2;
constraints.ipady = 2;
constraints.insets = new Insets(0,0,0,0);
constraints.anchor = GridBagConstraints.CENTER;
constraints.fill = GridBagConstraints.NONE;
this.add(new JLabel("Möchten Sie die Anwendung wirklich beenden?"), constraints);
constraints = new GridBagConstraints();
constraints.gridx = 0;
constraints.gridy = 1;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.weightx = 0;
constraints.weighty = 0;
constraints.ipadx = 2;
constraints.ipady = 2;
constraints.insets = new Insets(0,0,0,0);
constraints.anchor = GridBagConstraints.CENTER;
constraints.fill = GridBagConstraints.NONE;
this.add(chkNervMichNicht, constraints);
}
public static void main(String[] args) {
CheckBoxPanel checkboxPanel = new CheckBoxPanel();
JOptionPane.showConfirmDialog(null, checkboxPanel, "Anwendung schliessen?", JOptionPane.OK\_CANCEL\_OPTION);
}
}
Gruss,
-Andreas.