我正在做一个家庭作业项目,这是一个简单的彩票计划。该程序必须使用JOptionPane请求六个数字,并且它们必须小于60.我的问题是我可以仅使用一个JOPtionPane输入获得所有六个数字吗?
该程序使用随机数生成器将六个输入数字进行比较。
答案 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]);
...
String.split()
。 while
loops。