# JOptionPane resultat kriegen



## Shai (23. Jul 2009)

hi ihr lieben,

wie kann ich den listener einer JOptionPane ansprechen?

```
Object[] array = {msgString1 , ontname};
		JDialog dia = new JDialog();
		JOptionPane optionPane = new JOptionPane(array,
                JOptionPane.QUESTION_MESSAGE,
                JOptionPane.YES_NO_OPTION);
		dia.setContentPane(optionPane);
		dia.setVisible(true);
```

Ich will falls auf oki geklickt wird ontname.gettext(); abfragen ansonsten halt nicht.


----------



## The_S (23. Jul 2009)

JOptionPane ruft man normalerweise über seine statischen Methoden (inkl. Rückgabewert) auf (showConfirmDialog, showInputDialog, showMessageDialog und showOptionDialog).


----------



## Shai (23. Jul 2009)

welches wäre das in diesem fall?


----------



## noisebreath (23. Jul 2009)

machs so:


```
String b = new String("something ");
		JOptionPane optionPane = new JOptionPane();
		String s = optionPane.showInputDialog(b, JOptionPane.YES_NO_OPTION);
```


----------



## Shai (23. Jul 2009)

und wie kann ich schon etwas in dem Textfeld stehen haben? also so wie z.B. einen defaultwert


----------



## Ebenius (23. Jul 2009)

The_S hat gesagt.:


> JOptionPane ruft man normalerweise über seine statischen Methoden (inkl. Rückgabewert) auf (showConfirmDialog, showInputDialog, showMessageDialog und showOptionDialog).



Das stimmt oft nicht. Ich nutze die [c]JOptionPane[/c] eigentlich immer dann, wenn ich OK/Cancel-Dialoge oder ähnliches brauche. Oft auch ohne statische Methoden.



noisebreath hat gesagt.:


> machs so:


Mach's nicht so. Alle [c]showXXX()[/c]-Methoden in [c]JOptionPane[/c] sind statisch, der Quelltext ist also Unsinn.



Shai hat gesagt.:


> wie kann ich den listener einer JOptionPane ansprechen?
> [...]
> Ich will falls auf oki geklickt wird ontname.gettext(); abfragen ansonsten halt nicht.


Ganz ohne für Dich sichtbare Listener kannst Du entweder mit statischen Methoden arbeiten (wie oben schon geschrieben), in Deinem Fall wahrscheinlich am einfachsten: 
	
	
	
	





```
String result = JOptionPane.showInputDialog(rootComponent, msgString1);
```
[c]result[/c] ist [c]null[/c], wenn Cancel geklickt wurde, sonst der Wert aus dem Textfeld.

Wenn Du aus irgendeinem Grund selber Komponenten in das [c]JOptionPane[/c] legen willst, dann geht's zum Beispiel so:

```
final JLabel label = new JLabel("Please insert some Text");
final JTextArea textArea = new JTextArea(4, 30);
final JComboBox viewStatusCombo =
      new JComboBox(new String[] { "private", "public" });

final JPanel contentPane = new JPanel(new BorderLayout(6, 6));
contentPane.add(label, BorderLayout.PAGE_START);
contentPane.add(new JScrollPane(textArea), BorderLayout.CENTER);
contentPane.add(viewStatusCombo, BorderLayout.PAGE_END);

final JOptionPane pane =
      new JOptionPane(contentPane, JOptionPane.QUESTION_MESSAGE,
            JOptionPane.OK_CANCEL_OPTION) {

        @Override
        public void selectInitialValue() {
          textArea.requestFocus();
        }
      };
final JDialog dialog = pane.createDialog("Text Input");
pane.selectInitialValue();
dialog.setVisible(true);
dialog.dispose();

final Object value = pane.getValue();
if (value instanceof Integer
      && ((Integer) value).intValue() == JOptionPane.OK_OPTION) {
  System.out.printf("Entered the %s text: %s", viewStatusCombo
        .getSelectedItem(), textArea.getText());
} else {
  System.out.println("Canceled!");
}
```
Ebenius


----------



## The_S (24. Jul 2009)

Ebenius hat gesagt.:


> Das stimmt oft nicht. Ich nutze die [c]JOptionPane[/c] eigentlich immer dann, wenn ich OK/Cancel-Dialoge oder ähnliches brauche. Oft auch ohne statische Methoden.



Dann nutzt du es scheinbar standardmäßig anders als ich.


----------



## Ebenius (24. Jul 2009)

The_S hat gesagt.:


> Dann nutzt du es scheinbar standardmäßig anders als ich.


Das halte ich für gut möglich.  Ich verwende die JOptionPane in 90% aller Fälle mit einer der statischen [c]showXXX()[/c]-Methoden. Die anderen 10% sind eben über Konstruktor und [c]createDialog()[/c] implementiert.

Ebenius


----------

