Java-你能用一个JOptionPane消息得到多个变量吗?

时间:2014-02-12 18:55:53

标签: java swing joptionpane

我正在做一个家庭作业项目,这是一个简单的彩票计划。该程序必须使用JOptionPane请求六个数字,并且它们必须小于60.我的问题是我可以仅使用一个JOPtionPane输入获得所有六个数字吗?

该程序使用随机数生成器将六个输入数字进行比较。

3 个答案:

答案 0 :(得分:3)

是的,这是可能的。各种message方法的showXXX()参数定义为Object。如果您将Swing组件作为“消息”传递,它将正确显示:

类似的东西:

JPanel panel = new JPanel();
JCheckBox cbx = JCheckBox("Option 1");
JTextField tf = new JTextField();
panel.add(cbx);
panel.add(tf);
... add more controls
int result = JOptionPane.showConfirmDialg(yourFrame, panel, "Dialog titel", JOptionPane.OK_CANCEL_OPTION);
if (result == JOptionPane.OK_OPTION)
{
   boolean doStuff = cbx.isSelected();
   String someValue = tv.getText();
   ... process other options here
}

答案 1 :(得分:2)

你可以使用它,并可以相应地调整它

public class JOptionPaneMulti {
   public static void main(String[] args) {
      JTextField Field1 = new JTextField(5);
      JTextField Field2 = new JTextField(5);
      JTextField Field3 = new JTextField(5);
      JTextField Field4 = new JTextField(5);

      JPanel myPanel = new JPanel();
      myPanel.setLayout(new GridLayout(2,2));
      myPanel.add(new JLabel("input 1:"));
      myPanel.add(Field1);
      myPanel.add(new JLabel("input 2:"));
      myPanel.add(Field2);
      myPanel.add(new JLabel("input 3:"));
      myPanel.add(Field3);
      myPanel.add(new JLabel("input 4:"));
      myPanel.add(Field4);

      int result = JOptionPane.showConfirmDialog(null, myPanel, 
               "Please Enter Values", JOptionPane.OK_CANCEL_OPTION);
      if (result == JOptionPane.OK_OPTION) {
         System.out.println("1 value: " + Field1.getText());
         System.out.println("2 value: " + Field2.getText());
         System.out.println("3 value: " + Field3.getText());
         System.out.println("4 value: " + Field4.getText());
      }

   }
}

答案 2 :(得分:1)

JOptionPane.showInputDialog()返回一个String,因此您可以split返回值。

String input = JOptionPane.showInputDialog(...);
String[] array = input.split("\\s+");

检查阵列长度是否为6,以及它们是否都是数字。将其置于while循环中,直到满足这两个条件。如果没有继续显示对话框。如果 符合,那么请对该输入执行某些操作。

int num1 = Integer.parseInt(array[0]);
int num2 = Integer.parseInt(array[1]);
int num3 = Integer.parseInt(array[2]);
...