【问题标题】:Multiple input in JOptionPane.showInputDialogJOptionPane.showInputDialog 中的多个输入
【发布时间】:2011-09-27 03:45:12
【问题描述】:

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

【问题讨论】:

    标签: java swing joptionpane


    【解决方案1】:

    是的。您知道您可以将任何Object 放入大多数JOptionPane.showXXX methodsObject 参数中,而且通常Object 恰好是JPanel

    在您的情况下,也许您可​​以使用包含多个 JTextFieldsJPanel

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

    【讨论】:

    • @Marco:请查看Swing Tutorials,尤其是JPanels 部分
    • 如何将标签添加到另一个下方?我创建了一个垂直支柱但没有工作。顺便说一句,很好的解决方案。
    • @KostasThanasis:为持有 JLabels 的 JPanel 使用正确的布局管理器。 new GridLayout(0, 1) 可以工作,0, 1 代表可变行数 0 和 1 列 1
    【解决方案2】:

    这是我的解决方案

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

    【讨论】:

    • 简单、快速的解决方案。非常感谢。非常有用。
    猜你喜欢
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    相关资源
    最近更新 更多