JOptionPane.showOptionDialog显示没有按钮?

时间:2011-07-25 01:52:46

标签: java swing joptionpane

以下代码显示了一个预期的对话框,除了没有按钮:

  final JPasswordField passwdField = new JPasswordField();
  passwdField.setColumns(20);
  final JComponent[] inputs = new JComponent[] {  passwdField };
  int res = JOptionPane.showOptionDialog(null, "Enter Password", "Login", 
                  JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, 
                  null, inputs, "");

显示以下对话框(Java 6.2?,Windows 7 64-Bit):

enter image description here

为什么没有确定/取消按钮? (顺便说一下,对话框不可调整大小,所以我不知道它们是否在可见框架之外)

(另外,按Enter键不关闭对话框,“x”关闭对话框)

1 个答案:

答案 0 :(得分:2)

您的问题在于输入数组。阅读API,它会告诉你它应该是不同的。我通常使用一个String数组,每个String代表一个按钮String,或者有时我使用Objects的混合,混合组件和字符串。例如,

  JPasswordField passField = new JPasswordField(10);
  Object[] inputs = {passField, "OK", "Cancel"};
  int res = JOptionPane.showOptionDialog(null, "Enter Password", "Login", 
           JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, 
           null, inputs, "");
  if (res == 1) {
     System.out.println("Password is: " + new String(passField.getPassword()));
  }