Frage

Ich habe eine Schaltfläche auf einem JFrame, mit der ich beim Klicken ein Dialogfeld mit mehreren Textbereichen für Benutzereingaben öffnen möchte.Ich habe mich umgesehen, um herauszufinden, wie das geht, aber ich werde immer verwirrter.Kann jemand helfen?

War es hilfreich?

Lösung

Wenn Sie nicht viel benutzerdefiniertes Verhalten benötigen, ist JoptionPane eine gute Zeitsparung. Es kümmert sich um die Platzierung und Lokalisierung von OK / Abbrechen-Optionen und ist eine schnelle und schrägliche Möglichkeit, einen benutzerdefinierten Dialog zu zeigen, ohne Ihre eigenen Klassen zu definieren. Meistens ist der Parameter "Nachricht" in JoptionPane eine Zeichenfolge, aber Sie können auch in einem JComponent oder einer Array von JComponents übergeben.

Beispiel:

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);
}

Andere Tipps

Probieren Sie diese einfache Klasse aus, um einen Dialog nach Ihren Wünschen anzupassen:

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>";
    }
}

Diese Lektion Aus dem Java -Tutorial wird jede Schwungkomponente im Detail mit Beispielen und API -Links erläutert.

Wenn Sie die verwenden Netbeans IDE (Die neueste Version ist zu diesem Zeitpunkt 6.5.1) Sie können mithilfe dieser grundlegenden GUI-Java-Anwendung mit Datei-> neues Projekt erstellt und die Java-Kategorie Java-Desktop-Anwendung auswählen.

Sobald Sie erstellt haben, erhalten Sie eine einfache GUI -App mit nötigen Knochen, die eine About Box enthält, die mit einer Menüauswahl geöffnet werden kann. Sie sollten in der Lage sein, dies an Ihre Bedürfnisse anzupassen und zu erfahren, wie Sie einen Dialogfeld von einer Schaltfläche klicken.

Sie können den Dialogfeld visuell bearbeiten. Löschen Sie die dort vorhandenen Elemente und fügen Sie einige Textbereiche hinzu. Spiel damit herum und komm mit weiteren Fragen zurück, wenn du stecken bleibst :)

Nun, Sie erstellen im Wesentlichen einen JDialog, fügen Ihre Textkomponenten hinzu und machen ihn sichtbar.Es kann hilfreich sein, wenn Sie eingrenzen, mit welchem ​​spezifischen Teil Sie Probleme haben.

Ich habe eine benutzerdefinierte Dialog -API erstellt. Schau es dir hier an https://github.com/markmyword03/customdialog. Es unterstützt Nachrichten- und Bestätigungsbox. Eingabe- und Optionsdialog genau wie in JoptionPane wird in Kürze implementiert.

Beispielfehlerdialog von CustomDialog API:CustomDialog -Fehlermeldung

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top