我正在为汽车登记制作一个GUI,我正在尝试制作一个添加车辆的表格。主面板有所有基本选择。如果我按下添加车辆按钮,我正在运行showInputDialog
命令并显示一个窗口。
这包含一个下拉框,用户需要选择其中一个选项,一旦完成,我想更新同一个窗口以显示用户在第一个选择后可以选择的内容。例如,我想在汽车和卡车之间进行选择,而这两个参数有不同的参数,如果我选择汽车,我会在同一窗口中的第一个下方的新框/字段中获取汽车的参数,依此类推。 / p>
我是GUI / Swing的新手,但已经使用了Java一段时间了。
答案 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