Formulaire java contextuel simple avec au moins deux champs


Lorsque l'utilisateur clique sur un bouton, je veux afficher un formulaire contextuel qui devrait avoir au moins deux JTextFields et deux JLabels, donc utiliser JOptionPane.showInputDialog n'est pas une possibilité.

Author: brasofilo, 2010-06-09

1 answers

, Vous devriez au moins envisager l'une des JOptionPane des méthodes telles que showInputDialog() ou showMessageDialog().

Addendum: Le choix d'utiliser JOptionPane dépend davantage de la pertinence de la modalité, plutôt que du nombre de composants présentés. Voir aussi Comment Faire des boîtes de dialogue.

Addendum: Comme indiqué dans un commentaire de @ camickr, vous pouvez définir le focus sur un composant particulier en utilisant l'approche décrite dans Focus de Dialogue, 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() {
        String[] items = {"One", "Two", "Three", "Four", "Five"};
        JComboBox<String> 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();
            }
        });
    }
}
 39
Author: trashgod, 2017-05-23 12:02:39