JOptionPane
FireGlow
- java
Moin!
Gibt es ne Möglichkeit ein Dialogfenster (JOptionPane) mit mehreren "Select-Feldern" zu machen?
Gruß
FireGlow
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/