我正在创建一个应该执行控制台命令的软件。该命令因您在实际应用程序中设置的配置而异。
问题是,其中一个命令(总共4个)需要捕获一个整数才能进行配置。
通过以下代码通过下拉列表设置整数:
private String[] osList = {"Choose OS", "Windows 7 Pro", "Windows 7 Home Basic", "Windows 7 Home Premium", "Windows 7 Ultimate"};
private JComboBox osDropDown = new JComboBox(osList);
public int osIndex;
osDropDown.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED) {
Object item = e.getItem();
if(item.equals(osList[1])) {
osIndex = 3;
} else if(item.equals(osList[2])) {
osIndex = 1;
} else if(item.equals(osList[3])) {
osIndex = 2;
} else if(item.equals(osList[4])) {
osIndex = 4;
}
}
}
});
如您所见,例如,如果您选择“ Windows 7 pro”,则变量osIndex应该设置为3。
这是执行的命令:
"dism /mount-wim /wimfile:install.wim /index:" + formPanel.osIndex + " /mountdir:mount"
但是出于某种奇怪的原因,无论我选择列表中的哪个项目,它都会在osIndex上返回0。而且我不知道为什么?
如果使用此代码,则在列表中选择osIndex时,它将输出正确的osIndex值。但是当我尝试选择后运行命令时,它仍然返回0。
if(item.equals(osList[1])) {
osIndex = 3;
System.out.println(osList[1] + " [" + osIndex + "]");
} else if(item.equals(osList[2])) {
osIndex = 1;
System.out.println(osList[2] + " [" + osIndex + "]");
} else if(item.equals(osList[3])) {
osIndex = 2;
System.out.println(osList[3] + " [" + osIndex + "]");
} else if(item.equals(osList[4])) {
osIndex = 4;
System.out.println(osList[4] + " [" + osIndex + "]");
}
编辑:似乎数组中的命令已设置,并且一旦我更改列表中的项目就不会更改。我需要以某种方式做到这一点,当我更改列表项时;这就是将数组中的命令分配给变量的地方。关于如何执行此操作的任何好主意?
编辑2:通过这样做解决了;单击“转到”按钮后,它将数组中的命令文本设置为:
cmdExec.cmd[3] = "dism /mount-wim /wimfile:install.wim /index:" + formPanel.getOsIndex() + " /mountdir:mount";
不可能这是最好的解决方案,但这几乎是我目前能想到的唯一解决方案。如果有人有更好的主意,请告诉我!
最佳答案
什么都没有“归还”。根本不会重新分配默认值。
真实测试-使用调试器并设置一些断点。 System.out是一种测试某些事物的简便方法
但是,因为您的字符串可以正常打印,所以似乎每次更新osIndex变量时都需要创建一个新的命令字符串