JOptionPane.showInputDialog中的多个输入

sia*_*ooo 61 java swing joptionpane

有没有办法创建多个输入JOptionPane.showInputDialog而不是只有一个输入?

Hov*_*els 125

是.你知道你可以将任何参数Object放入Object大多数参数中JOptionPane.showXXX methods,并且通常Object恰好是一个参数JPanel.

在你的情况下,也许你可以使用JPanel其中有几个JTextFields:

import javax.swing.*;

public class JOptionPaneMultiInput {
   public static void main(String[] args) {
      JTextField xField = new JTextField(5);
      JTextField yField = new JTextField(5);

      JPanel myPanel = new JPanel();
      myPanel.add(new JLabel("x:"));
      myPanel.add(xField);
      myPanel.add(Box.createHorizontalStrut(15)); // a spacer
      myPanel.add(new JLabel("y:"));
      myPanel.add(yField);

      int result = JOptionPane.showConfirmDialog(null, myPanel, 
               "Please Enter X and Y Values", JOptionPane.OK_CANCEL_OPTION);
      if (result == JOptionPane.OK_OPTION) {
         System.out.println("x value: " + xField.getText());
         System.out.println("y value: " + yField.getText());
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

  • +1,我将链接到Dialog Focus(http://tips4java.wordpress.com/2010/03/14/dialog-focus/),其中包含一个简单的类,可以将焦点设置在您的文本字段上可能会觉得有用. (6认同)
  • @KostasThanasis:为持有 JLabels 的 JPanel 使用正确的布局管理器。可以使用“new GridLayout(0, 1)”,“0, 1”代表可变数量的行“0”和 1 列“1”。 (2认同)

小智 32

这是我的解决方案

JTextField username = new JTextField();
JTextField password = new JPasswordField();
Object[] message = {
    "Username:", username,
    "Password:", password
};

int option = JOptionPane.showConfirmDialog(null, message, "Login", JOptionPane.OK_CANCEL_OPTION);
if (option == JOptionPane.OK_OPTION) {
    if (username.getText().equals("h") && password.getText().equals("h")) {
        System.out.println("Login successful");
    } else {
        System.out.println("login failed");
    }
} else {
    System.out.println("Login canceled");
}
Run Code Online (Sandbox Code Playgroud)

  • 简单快捷的解决方案.非常感谢.很有用. (4认同)