Reicht dir denn der InputDialog von
JOptionPane nicht aus? Du kannst da ein Icon angeben, den Titel und die Nachricht setzen und bekommst auch den eingegebenen Text zurück. Mehr will man doch von so einem InputDialog nicht, eigentlich bräuchte man nicht einmal das Icon.
Naja, sowas zu basteln ist aber auch nicht sonderlich schwer. Der Trick dabei ist, dass der Dialog modal sein muss, damit das Programm an der Stelle hängen bleibt und sobald der Dialog zerstört wird, läuft das Programm weiter.
Hab da mal ein einfaches Beispiel zur Veranschaulichung gebastelt:
Java:
package de.tutorials.forum.help.solidus0815.dialogs;
import java.awt.Dialog.ModalityType;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.GridLayout;
import java.awt.Window;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class MyDialogs {
public static String showInputDialog(Window owner, String message, String title) {
final JDialog dialog = new JDialog(owner, title, ModalityType.APPLICATION_MODAL);
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
JLabel messageLabel = new JLabel(message);
JTextField inputTextField = new JTextField();
JButton okButton = new JButton("OK");
okButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dialog.dispose();
}
});
dialog.setLayout(new GridLayout(3, 1));
dialog.add(messageLabel);
dialog.add(inputTextField);
dialog.add(okButton);
dialog.setSize(350, 100);
dialog.setLocationRelativeTo(null);
dialog.setVisible(true);
return inputTextField.getText();
}
}
Wie du siehst, kannst du den Dialog gestalten, wie du lustig bist und genauso auch machen, was du willst.
Testen kannst du das dann z.B. so:
Java:
package de.tutorials.forum.help.solidus0815.dialogs;
public class DialogsTest {
public static void main(String[] args) {
// JOptionPane.showInputDialog("rofl");
System.out.println(MyDialogs.showInputDialog(null, "Test und so", "Test"));
}
}
Da siehst du auch, dass es erst weiter geht, wenn man den Dialog zerstört hat. Das passiert z.B. beim Klick auf den OK-Button. Leider auch beim Klick auf den Schließen-Button des Dialogs, das müsste dann abgefangen werden. Aber wie gesagt, dient ja eigentlich auch nur der Vernaschaulichung und mehr nicht.