Domanda

Ho un pulsante su un JFrame che, quando cliccato voglio una finestra di dialogo popup con più aree di testo per l'input dell'utente.Sto guardando intorno per cercare di capire come fare questo, ma continuo a ricevere più confuso.Qualcuno può aiutarmi?

È stato utile?

Soluzione

Se non avete bisogno di molto in termini di comportamento personalizzato, JOptionPane è un buon risparmio di tempo. Si prende cura di posizionamento e localizzazione di OK Annulla Opzioni /, ed è un modo rapido e-sporco per mostrare una finestra di dialogo personalizzata senza la necessità di definire le vostre classi. La maggior parte delle volte il parametro "messaggio" in JOptionPane è una stringa, ma è possibile passare in un JComponent o array di JComponents pure.

Esempio:

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

Altri suggerimenti

Prova questo semplice classe per la personalizzazione di una finestra di dialogo a proprio piacimento:

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

Questo lezione dal tutorial Java spiega ciascun componente swing in dettaglio, con esempi e collegamenti API.

Se si utilizza il NetBeans IDE (ultima versione, in questo momento, è 6.5.1), è possibile utilizzarlo per creare una base GUI applicazione java che utilizza File->Nuovo Progetto e scegliere la categoria Java, Java Desktop Application.

Una volta creato, si avrà un semplice bare bones GUI app che contiene una finestra di informazioni che può essere aperto con un menu di selezione.Si dovrebbe essere in grado di adattarsi alle vostre esigenze, e imparare come aprire una finestra di dialogo con il clic di un pulsante.

Sarete in grado di modificare la finestra di dialogo visivamente.Eliminare gli elementi che ci sono e aggiungere alcune aree di testo.Giocare con esso e tornare con più domande, se riesci :)

Bene, si crea essenzialmente una JDialog, aggiungere i componenti di testo e renderlo visibile. Potrebbe essere utile se si restringere il cui bit specifico hai problemi con.

ho creato una finestra di dialogo personalizzata API. verificarlo qui https://github.com/MarkMyWord03/CustomDialog . Supporta messaggio e di conferma. ingresso e di dialogo opzione, proprio come in JOptionPane saranno attuate al più presto.

Errore di esempio di dialogo da CUstomDialog API: CustomDialog messaggio di errore

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top