Java – Como criar uma checkbox de diálogo personalizada?

Eu tenho um botão em um JFrame que quando clicado eu quero uma checkbox de diálogo para pop-up com várias áreas de texto para input do usuário. Eu tenho procurado por todos os lados para tentar descobrir como fazer isso, mas continuo ficando mais confuso. Alguém pode ajudar?

Se você não precisa muito do comportamento personalizado, o JOptionPane economiza muito tempo. Ele cuida do posicionamento e localização das opções de OK / Cancelar e é uma maneira rápida e suja de mostrar uma checkbox de diálogo personalizada sem precisar definir suas próprias classs. Na maioria das vezes, o parâmetro “message” no JOptionPane é uma String, mas você também pode passar um JComponent ou uma matriz de JComponents.

Exemplo:

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

Esta lição do tutorial Java explica cada componente Swing detalhadamente, com exemplos e links de API.

Se você usar o NetBeans IDE (a versão mais recente neste momento é 6.5.1), poderá usá-lo para criar um aplicativo Java da GUI básico usando Arquivo-> Novo Projeto e escolher a categoria Java e, em seguida, o Aplicativo de Área de Trabalho Java.

Uma vez criado, você terá um aplicativo GUI simples, que contém uma checkbox sobre a qual pode ser aberta usando uma seleção de menu. Você deve ser capaz de adaptar isso às suas necessidades e aprender como abrir um diálogo a partir de um clique no botão.

Você poderá editar a checkbox de diálogo visualmente. Exclua os itens que estão lá e adicione algumas áreas de texto. Brinque com isso e volte com mais perguntas se você ficar preso 🙂

Bem, você essencialmente cria um JDialog, adiciona seus componentes de texto e os torna visíveis. Pode ajudar se você restringir o bit específico com o qual está tendo problemas.

Experimente esta class simples para personalizar uma checkbox de diálogo ao seu gosto:

 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 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("" + messageText + ""); 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 "
"; } }

Eu criei uma API de diálogo personalizado. confira aqui https://github.com/MarkMyWord03/CustomDialog . Suporta mensagem e checkbox de confirmação. input e diálogo de opções como em joptionpane serão implementados em breve.

Exemplo de checkbox de diálogo de erro da API CUstomDialog : Mensagem de erro CustomDialog