Pregunta

Tengo un botón en un jframe que, cuando se hace clic, quiero un cuadro de diálogo para aparecer con múltiples áreas de texto para la entrada del usuario. He estado buscando por todas partes para tratar de descubrir cómo hacer esto, pero sigo más confundido. ¿Alguien puede ayudar?

¿Fue útil?

Solución

Si no necesita mucho en cuanto al comportamiento personalizado, JoptionPane es un buen ahorro de tiempo. Se encarga de la ubicación y la localización de las opciones OK / Cancel, y es una forma rápida de mostrar un diálogo personalizado sin necesidad de definir sus propias clases. La mayoría de las veces el parámetro de "mensaje" en JoptionPane es una cadena, pero también puede pasar un componente j o una matriz de JComponentes.

Ejemplo:

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

Otros consejos

Pruebe esta clase simple para personalizar un diálogo a su gusto:

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

Esta lección Del tutorial de Java explica cada componente de swing en detalle, con ejemplos y enlaces API.

Si usa el NetBeans IDE (La última versión en este momento es 6.5.1), puede usarla para crear una aplicación GUI Java básica usando el archivo-> nuevo proyecto y elegir la categoría Java y luego la aplicación Java Desktop.

Una vez creado, tendrá una aplicación simple de GUI Bare Bones que contiene una caja Acerca de que se puede abrir utilizando una selección de menú. Debería poder adaptar esto a sus necesidades y aprender a abrir un cuadro de diálogo desde un clic de botón.

Podrá editar el diálogo visualmente. Elimine los elementos que están allí y agregue algunas áreas de texto. Juega con él y vuelve con más preguntas si te quedas atrapado :)

Bueno, esencialmente crea un JDialog, agregue sus componentes de texto y lo haga visible. Puede ayudar si reduce con qué bit específico tiene problemas.

Creé una API de diálogo personalizado. Compruébalo aquí https://github.com/markmyword03/customdialog. Admite mensaje y cuadro de confirmación. El diálogo de entrada y opción al igual que en JOptionPane se implementará pronto.

Diálogo de error de muestra de la API CustomDialog:Mensaje de error de CustomDialog

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top