swing-Java-如何创建自定义对话框
我在JFrame上有一个按钮单击该按钮后我希望对话框弹出并带有多个文本区域供用户输入。 我一直在四处寻找解决方法但我一直感到困惑。 有人可以帮忙吗
6个解决方案
80 votes
如果您不需要太多自定义行为则JOptionPane可以节省大量时间。 它负责确定/取消选项的放置和本地化并且是一种无需定义自己的类即可显示自定义对话框的快捷方法。 大多数情况下JOptionPane中的“ message”参数是一个字符串但您也可以传入JComponent或JComponents数组。
例
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);
}
Sam Barnum answered 2020-08-06T16:46:36Z
3 votes
尝试使用以下简单类自定义您喜欢的对话框
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 "";
}
}
BullyWiiPlaza answered 2020-08-06T16:46:56Z
1 votes
Java教程中的这一课详细说明了每个Swing组件并提供了示例和API链接。
bdl answered 2020-08-06T16:47:17Z
1 votes
如果使用NetBeans IDE(当前最新版本为6.5.1)则可以使用File-> New Project创建一个基本的GUI Java应用程序然后选择Java类别然后选择Java Desktop Application。
创建后您将拥有一个简单的裸露GUI应用程序其中包含一个About框可以使用菜单选择来打开该框。 您应该能够使其适应您的需求并了解如何通过单击按钮来打开对话框。
您将能够直观地编辑对话框。 删除其中的项目并添加一些文本区域。 试一试如果遇到问题还会遇到更多问题:)
Arnold Spence answered 2020-08-06T16:47:47Z
1 votes
好吧您实质上就是创建一个JDialog添加您的文本组件并使它可见。 如果缩小所遇到的特定位可能会有所帮助。
Neil Coffey answered 2020-08-06T16:48:07Z
1 votes
我创建了一个自定义对话框API。 在此处检查[https://github.com/MarkMyWord03/CustomDialog。]它支持消息和确认框。 就像joptionpane中一样input和option对话框将很快实现。
CUstomDialog API的示例错误对话框CustomDialog错误消息
MarkMyWord03 answered 2020-08-06T16:48:34Z