如何向showInputDialog窗口添加字段?

时间:2014-04-23 09:30:45

标签: java swing joptionpane

我正在为汽车登记制作一个GUI,我正在尝试制作一个添加车辆的表格。主面板有所有基本选择。如果我按下添加车辆按钮,我正在运行showInputDialog命令并显示一个窗口。

这包含一个下拉框,用户需要选择其中一个选项,一旦完成,我想更新同一个窗口以显示用户在第一个选择后可以选择的内容。例如,我想在汽车和卡车之间进行选择,而这两个参数有不同的参数,如果我选择汽车,我会在同一窗口中的第一个下方的新框/字段中获取汽车的参数,依此类推。 / p>

我是GUI / Swing的新手,但已经使用了Java一段时间了。

1 个答案:

答案 0 :(得分:0)

这可能是您想要使用的代码(或其中的一些变体):

Object[] possibleChoices = {"Car", "Truck"};
Object choice = JOptionPane.showInputDialog(null, "Choose a vehicle type", "Choose Vehicle", JOptionPane.PLAIN_MESSAGE, null, possibleChoices, possibleChoices[0]);

switch (choice.toString)
{
    case "Car": 
        //insert code for if this choice is made
        break;
    case "Truck":
        //insert code for if this choice is made
        break;
}

解释:

以下内容为JOptionPane框中的下拉列表创建一个数组。

Object[] possibleChoices = {"Car", "Truck"};

以下打开JOptionPane并将选择的值放入引用变量" choice"。它使用构造函数JOptionPane(Object message,int messageType,int optionType,Icon icon,Object [] options,Object initialValue)。

Object choice = JOptionPane.showInputDialog(null, "Choose a vehicle type", "Choose Vehicle", JOptionPane.PLAIN_MESSAGE, null, possibleChoices, possibleChoices[0]);

然后,switch语句根据选择执行代码。请注意,它使用了choice.toString()方法,这是必要的,因为数组必须是一个Object,并且不能在代码的第二行中从该数组转换为字符串。

如果你想能够根据在这个JOptionPane中做出的选择创建第二个选择,你可以让它打开第二个JOptionPane,它根据第一个JOptionPane中的选择使用不同的数组,然后添加另一个开关执行第二个选择代码的语句如下:

例如,完整代码看起来像这样:

Object[] possibleChoices = {"Car", "Truck"};
Object choice = JOptionPane.showInputDialog(null, "Choose a vehicle type", "Choose Vehicle", JOptionPane.PLAIN_MESSAGE, null, possibleChoices, possibleChoices[0]);

switch (choice.toString)
{
    case "Car": 
        //insert code for if this choice is made
        break;
    case "Truck":
        //insert code for if this choice is made
        break;
}

Object[] carChoices = {"Honda", "Nissan", "Acura"};
Object[] truckChoices = {"Ford", "GM"};
Object choice2;

switch (choice.toString)
{
    case "Car": 
        choice2 = JOptionPane.showInputDialog(null, "Choose a car type", "Choose Car", JOptionPane.PLAIN_MESSAGE, null, carChoices, carChoices[0]);
        break;
    case "Truck":
        choice2 = JOptionPane.showInputDialog(null, "Choose a vehicle type", "Choose Vehicle", JOptionPane.PLAIN_MESSAGE, null, truckChoices, truckChoices[0]);
        break;
}

switch (choice2.toString())
{
    case "Honda": 
        //code for this choice; 
        break;
    case "Nissan":
        //code for this choice; 
        break;
    case "Acura":
        //code for this choice; 
        break;
    case "Ford":
        //code for this choice; 
        break;
    case "GM":
        //code for this choice; 
        break;
}

有关JOptionPane的更多信息,请参阅:JavaDocs for JOptionPane