Question

J'ai un bouton sur une JFrame que lorsque vous cliquez dessus, je veux une boîte de dialogue contextuel avec plusieurs zones de texte pour la saisie de l'utilisateur. J'ai cherché tout autour pour essayer de comprendre comment faire cela, mais je continue à obtenir plus confus. Quelqu'un peut-il aider?

Était-ce utile?

La solution

Si vous n'avez pas besoin beaucoup de la manière de comportement personnalisé, JOptionPane est un bon gain de temps. Il prend en charge le placement et la localisation de OK / Annuler options et est un moyen rapide et sale pour afficher une boîte de dialogue personnalisée sans avoir besoin de définir vos propres classes. La plupart du temps le paramètre « message » dans JOptionPane est une chaîne, mais vous pouvez passer dans un JComponent ou un tableau de JComponents ainsi.

Exemple:

JTextField firstName = new JTextField();
JTextField lastName = new JTextField();
JPasswordField password = new JPasswordField();
final JComponent[] inputs = new JComponent[] {
        new JLabel("First"),
        firstName,
        new JLabel("Last"),
        lastName,
        new JLabel("Password"),
        password
};
int result = JOptionPane.showConfirmDialog(null, inputs, "My custom dialog", JOptionPane.PLAIN_MESSAGE);
if (result == JOptionPane.OK_OPTION) {
    System.out.println("You entered " +
            firstName.getText() + ", " +
            lastName.getText() + ", " +
            password.getText());
} else {
    System.out.println("User canceled / closed the dialog, result = " + result);
}

Autres conseils

Essayez cette classe simple pour personnaliser une boîte de dialogue à votre goût:

import java.util.ArrayList;
import java.util.List;

import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JRootPane;

public class CustomDialog
{
    private List<JComponent> components;

    private String title;
    private int messageType;
    private JRootPane rootPane;
    private String[] options;
    private int optionIndex;

    public CustomDialog()
    {
        components = new ArrayList<>();

        setTitle("Custom dialog");
        setMessageType(JOptionPane.PLAIN_MESSAGE);
        setRootPane(null);
        setOptions(new String[] { "OK", "Cancel" });
        setOptionSelection(0);
    }

    public void setTitle(String title)
    {
        this.title = title;
    }

    public void setMessageType(int messageType)
    {
        this.messageType = messageType;
    }

    public void addComponent(JComponent component)
    {
        components.add(component);
    }

    public void addMessageText(String messageText)
    {
        JLabel label = new JLabel("<html>" + messageText + "</html>");

        components.add(label);
    }

    public void setRootPane(JRootPane rootPane)
    {
        this.rootPane = rootPane;
    }

    public void setOptions(String[] options)
    {
        this.options = options;
    }

    public void setOptionSelection(int optionIndex)
    {
        this.optionIndex = optionIndex;
    }

    public int show()
    {
        int optionType = JOptionPane.OK_CANCEL_OPTION;
        Object optionSelection = null;

        if(options.length != 0)
        {
            optionSelection = options[optionIndex];
        }

        int selection = JOptionPane.showOptionDialog(rootPane,
                components.toArray(), title, optionType, messageType, null,
                options, optionSelection);

        return selection;
    }

    public static String getLineBreak()
    {
        return "<br>";
    }
}

Cette leçon du tutoriel Java explique chaque composant Swing en détail, avec des exemples et des liens API.

Si vous utilisez le NetBeans IDE (dernière version à ce moment est de 6,5. 1), vous pouvez l'utiliser pour créer une application java GUI de base en utilisant Fichier-> Nouveau projet et choisissez la catégorie Java puis Java Desktop application.

Une fois créé, vous aurez simple os nus application GUI qui contient une boîte qui peut au sujet être ouvert à l'aide d'une sélection de menu. Vous devriez être en mesure d'adapter ce à vos besoins et savoir comment ouvrir une boîte de dialogue à partir d'un bouton clic.

Vous pourrez modifier visuellement la boîte de dialogue. Supprimer les éléments qui sont là et ajouter quelques zones de texte. Jouez avec lui et de revenir avec plus de questions si vous êtes bloqué:)

Eh bien, vous essentiellement créer un JDialog, ajoutez vos composants de texte et le rendre visible. Il pourrait aider si vous affinez quel bit spécifique que vous rencontrez des problèmes avec.

i créé une API de dialogue personnalisée. vérifier ici https://github.com/MarkMyWord03/CustomDialog . Il prend en charge la boîte de message et la confirmation. entrée et le dialogue des options comme dans JOptionPane seront mis en œuvre prochainement.

Erreur d'échantillon de dialogue de l'API CUstomDialog: CustomDialog Message d'erreur

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top