jOptionPane (ConfirmDialog) aufrufen

Fitzi21

Aktives Mitglied
Hallo,

ich habe schon wieder ne Frage.
Wahrscheinlich stell ich mich wie immer blöd an, aber ich setze mich jetzt mal den hämischen Blicken aus und hoffe auch nette Hilfe 🙂


Ich habe mit dem Visual Editor in Eclipse eine jOptionPane erstellt.
Der generierte Code dazu:

Java:
	private JOptionPane getJOptionPaneExit() {
		if (jOptionPaneExit == null) {
			jOptionPaneExit = new JOptionPane();
			jOptionPaneExit.setMessage("Wollen sie das Programm wirklich schließen ?");
			jOptionPaneExit.setName("Beenden");
			jOptionPaneExit.setOptionType(JOptionPane.YES_NO_CANCEL_OPTION);
			jOptionPaneExit.setMessageType(JOptionPane.QUESTION_MESSAGE);
		}
		return jOptionPaneExit;
	}

Wie man sicherlich erkennen kann, ist das als eine Nachfrage gedacht, nachdem man Beenden gedrückt hat.
Nun bin ich aber zu blöd diese erstellte OptionPane aufzurufen.
Ich hatte eigentlich gedacht, dass das ja ne Methode ist, die ich einfach im ActionListener aufrufen kann. Naja, nach ausprobieren meiner geistigen ergüsse habe ich das dann aufgegeben.

Wie rufe ich das denn so richtig auf, wenn das geht?
Bzw. bleibt mir nur übrig, mit .showConfirmDialog zu arbeiten?

Mit:
Java:
int mBeendenJaNein = JOptionPane.showConfirmDialog(null, getJOptionPaneExit());
hatte ich es dann probiert, aber da kam das Fenster dann ineinander gleich zweimal.

Falls es nicht geht diese generierte OptionPane zu nehmen, muss ich dann halt die OptionPane ausschließlich manuel erstellen, wie es ja normalerweise läuft. Nur als blutiger Anfänger war es mal ein Versuch wert.

Viele Grüße
Fitzi
 
How to Make Dialogs (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)

You must then add the option pane to a JDialog, register a property-change listener on the option pane, and show the dialog. See Stopping Automatic Dialog Closing for details.

D.h. du brauchst so etwas wie
Java:
		final JDialog dialog = new JDialog(owner, "Title", true);
		dialog.setContentPane(getJOptionPaneExit());
		dialog.pack();
		dialog.setVisible(true);

+ die Listener
 
Ich danke dir.

So klappt das jetzt:

Java:
	private JMenuItem getMenuItemBeenden() {
		if (menuItemBeenden == null) {
			menuItemBeenden = new JMenuItem();
			menuItemBeenden.setText("Schließen");
			menuItemBeenden.setIcon(new ImageIcon(getClass().getResource("/paketBilder/exit_icon.gif")));
			menuItemBeenden.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed
					int mBeendenJaNein = JOptionPane.showOptionDialog(null, "Wollen Sie das Programm wirklich beenden ?", "Beenden", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null);
					if (mBeendenJaNein == 0)
					{
						System.exit(0);
					}
				}
			});
		}
		return menuItemBeenden;
	}

Ist das so in Ordnung oder ist da ne Todsünde dabei?

Gruß Fitzi
 

Zurück
Oben