Formulaire java popup simple avec au moins deux champs

Lorsque l’utilisateur clique sur un bouton, je souhaite afficher un formulaire contextuel contenant au moins deux JTextFields et deux JLabels. JOptionPane.showInputDialog n’est donc pas possible d’utiliser JOptionPane.showInputDialog .

Vous devez au moins envisager l’une des méthodes JOptionPane telles que showInputDialog() ou showMessageDialog() .

Addendum: le choix d’utiliser JOptionPane dépend davantage de la pertinence de la modalité que du nombre de composants indiqués. Voir aussi Comment créer des dialogs .

Addendum: comme indiqué dans un commentaire de @camickr, vous pouvez définir le focus sur un composant particulier à l’aide de l’approche décrite dans Dialog Focus , cité ici .

image

 package gui; import java.awt.EventQueue; import java.awt.GridLayout; import javax.swing.*; /** @see https://stackoverflow.com/a/3002830/230513 */ class JOptionPaneTest { private static void display() { Ssortingng[] items = {"One", "Two", "Three", "Four", "Five"}; JComboBox combo = new JComboBox<>(items); JTextField field1 = new JTextField("1234.56"); JTextField field2 = new JTextField("9876.54"); JPanel panel = new JPanel(new GridLayout(0, 1)); panel.add(combo); panel.add(new JLabel("Field 1:")); panel.add(field1); panel.add(new JLabel("Field 2:")); panel.add(field2); int result = JOptionPane.showConfirmDialog(null, panel, "Test", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); if (result == JOptionPane.OK_OPTION) { System.out.println(combo.getSelectedItem() + " " + field1.getText() + " " + field2.getText()); } else { System.out.println("Cancelled"); } } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { display(); } }); } }