可能的重复项:
具有至少两个字段的简单弹出式 Java 表单
我正在尝试制作一个具有多个按钮、输入文本的位置等的对话框。 我正在使用本教程 - http://download.oracle.com/javase/tutorial/uiswing/components/dialog.html,但它没有任何关于拥有多个项目的内容。 有没有办法做到这一点?
许多 showXXXXDialog 方法将 Object 作为参数之一。 如果该对象是字符串,则将显示字符串。 如果该对象是包含按钮、输入字段和其他小部件的容器,则会显示该容器。
引用 http://download.oracle.com/javase/6/docs/api/javax/swing/JOptionPane.html
Parameters: The parameters to these methods follow consistent patterns: parentComponent
定义要作为此对话框父级的组件。它 以两种方式使用:框架 包含它用作框架 对话框的父级及其 屏幕坐标用于 对话框的位置。在 常规,对话框仅放置 在组件下方。此参数 可能为 null,在这种情况下为默认值 框架用作父级,并且 对话框将在屏幕上居中 (取决于L&F)。
message
要放置在对话框中的描述性消息。在最常见的 用法,消息只是一个字符串或 字符串常量。但是,类型 此参数实际上是对象。其 解释取决于其类型:
对象[] 对象数组被解释为一系列消息(每个消息一个 对象)以垂直堆叠排列。 解释是递归的—— 数组中的每个对象都是 根据其类型进行解释。
元件 组件将显示在对话框中。
图标 图标包装在 JLabel 中并显示在对话框中。
别人 通过调用其 toString 方法将对象转换为字符串。结果包装在 JLabel 中并显示。
这里有两个选择。要么使用 JOptionPane 方法显示Paul Tomblin
详述的对话框,要么构建自己的对话框。
如果您想要对对话框进行细粒度控制,例如,如果您需要不同的名称(也可以通过使用 JOptionPane.showOptionDialog 来完成)或对话框上按钮的位置,或者如果您需要非模式对话框,则第二个选项是必需的。
简单的例子:
import java.awt.Color;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
public class DialogsTest
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
JPanel p = new JPanel();
JPanel contentPane = new JPanel();
contentPane.add(p);
JFrame f = new JFrame();
f.setContentPane(contentPane);
f.setSize(400, 300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
/*
* NOTE: It is not recomended to share the same instance of a component
* by different parents. Thought it is fine here since the first
* dialog will release it before the second will get it.
* But in a situation when we wouldn't make the 'dialog' modal and
* we would show it after the 'option pane dialog' it would be empty.
*/
JPanel message = new JPanel();
message.add(new JLabel("Label:"));
message.add(new JTextField("ABCD"));
message.setBackground(Color.GREEN);
JOptionPane.showConfirmDialog(f, message, "Default made dialog", JOptionPane.YES_NO_OPTION);
Object[] options = new String[]{"a", "b", "c"};
JOptionPane.showOptionDialog(f, message, "", JOptionPane.YES_OPTION, JOptionPane.INFORMATION_MESSAGE,
null, options, options[0]);
JDialog dialog = new JDialog(f, "Custom made dialog");
dialog.setModal(true);
dialog.setContentPane(message);
dialog.pack();
dialog.setLocationRelativeTo(f);
dialog.setVisible(true);
}
});
}
}
顺便说一句,您在阅读的 Java 教程中有一个非常好(可能太丰富)的示例。