从JOptionPane获取值并使用它们来创建类的新实例

时间:2014-11-27 11:17:17

标签: java arrays swing object joptionpane

我想从JOptionPane中检索用户值,然后我想将这些值用作创建另一个类的新实例的参数。 这是我的代码:

protected void addCar()
{
   String[] size = {"Large","Small"};
   String[] value = {"Valuable","Not Valuable"};

    JTextField regNum = new JTextField();
    JList carSize = new JList(size);
    JList carValue = new JList(value);

    carValue.getSelectedValue();
    System.out.println(carSize.getSelectedValue());
    Object[] fields = 
    {
        "Registration Number", regNum,
        "Car Size", carSize,
        "Car Value", carValue
    };

    JOptionPane.showOptionDialog(rootPane, fields, "Wish To Continue?", 
            JOptionPane.DEFAULT_OPTION, JOptionPane.YES_NO_OPTION, 
            null, null, regNum);


}//end addCar

1 个答案:

答案 0 :(得分:0)

您只需从返回后传递给showOptionDialog()的组件中获取用户输入。

有一点需要注意:showOptionDialog()的第4个参数是选项类型,因此它应该是YES_NO_OPTION而不是DEFAULT_OPTION。第5个参数是您可以传递INFORMATION_MESSAGE的消息类型。其他参数与您的情况无关。

见这个例子:

// Your code here to create components

JOptionPane.showOptionDialog(null, fields, "Wish To Continue?",
   JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null);

System.out.println(fields[0] + ": " + regNum.getText());
System.out.println(fields[2] + ": " + carSize.getSelectedValue());
System.out.println(fields[4] + ": " + carValue.getSelectedValue());

输出:

Registration Number: 1234
Car Size: Large
Car Value: Not Valuable

如果您想使用这些值来创建另一个类的实例,您可以像这样简单地传递它们:

OtherClass oc = new OtherClass(regNum.getText(), carSize.getSelectedValue(),
        carValue.getSelectedValue());

这假设你的OtherClass有一个像这样的构造函数:

public OtherClass(String regNum, String carSize, String carValue) {
}