Marc Reichelt: Optionsdialog mit JOptionPane

Beitrag lesen

Hallo FireGlow,

Gibt es ne Möglichkeit ein Dialogfenster (JOptionPane) mit mehreren "Select-Feldern" zu machen?

Aber natürlich:

public static int [link:http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JOptionPane.html#showOptionDialog(java.awt.Component,%20java.lang.Object,%20java.lang.String,%20int,%20int,%20javax.swing.Icon,%20java.lang.Object%5B%5D,%20java.lang.Object)@title=showOptionDialog](  
    Component parentComponent,  
    Object message,  
    String title,  
    int optionType,  
    int messageType,  
    Icon icon,  
    Object[] options,  
    Object initialValue  
) throws HeadlessException

Der Aufruf erfolgt etwa wie folgt:

  
// Panel, das beliebige Inhalte haben kann  
JPanel panel = new JPanel();  
  
// z. B. zwei Textfelder (oder select-Felder, oder...)  
JTextField t1 = new JTextField();  
JTextField t2 = new JTextField();  
  
// das Panel kann natürlich auch ein eigenes Layout haben,  
// hier kümmern wir uns aber nicht darum  
panel.add(t1);  
panel.add(t2);  
  
// Titel des Dialogs  
String title = "Ein echt toller Optionsdialog!";  
  
// optionType und messageType siehe Java Doku - hier brauchen wir sie nicht,  
// da wir weder vordefinierte Buttons noch ein tolles Icon haben wollen  
//  
// ich glaube, ich habe diese Parameter immer auf 0 gestellt - ansonsten wäre  
// -1 noch möglich  
int optionType = 0;  
int messageType = 0;  
  
// wir brauchen auch kein Icon  
Icon icon = null;  
  
// die Optionen  
String[] options = new String[] { "Ja", "Nein", "Vielleicht" };  
  
// normalerweise ausgewählt: "Ja"  
int initialValue = 0;  
  
// Aufruf des Optionsdialogs - in "result" wird das Resultat gespeichert,  
// also der Wert, den der Benutzer ausgewählt hat - oder -1 für einen Abbruch  
int result = JOptionPane.showOptionDialog(  
    null,  
    panel,  
    title,  
    optionType,  
    messageType,  
    null,            /* wir brauchen kein Icon */  
    options,  
    initialValue  
);  
  
// hier können nun die Ergebnisse verarbeitet werden  
if (result == 0) {  
    System.out.println(t1.getText());  
    System.out.println(t2.getText());  
} else {  
    System.out.println(result);  
}

Habe den Code nicht getestet, aber so ähnlich müsste es auf jeden Fall gehen. :-)

Grüße

Marc Reichelt || http://www.marcreichelt.de/

--
Linux is like a wigwam - no windows, no gates and an Apache inside!
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)