Я создаю программное обеспечение, которое должно выполнять консольную команду. Команда зависит от конфигурации, которую вы настроили в реальном приложении.Почему это целое число возвращает 0, хотя это не 0?
Проблема в том, что одна из команд (всего 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;
}
}
}
});
Как вы можете видеть, переменная osIndex должен быть установлен на 3, например, если вы выбрали «Windows 7 Pro».
Это команда, которая выполняется:
"dism /mount-wim /wimfile:install.wim /index:" + formPanel.osIndex + " /mountdir:mount"
Но по какой-то странной причине, она возвращает 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 + "]");
}
EDIT: Кажется, что команда в массиве установлен и не меняется один раз изменить элемент в списке. Мне нужно, так или иначе, сделать это, когда я изменяю элемент списка; это тот момент, когда команда в массиве назначается переменной. Любые хорошие идеи о том, как это сделать?
EDIT 2: Решил, выполнив это; когда я нажимаю на кнопку «Go», он устанавливает текст команды в массиве на:
cmdExec.cmd[3] = "dism /mount-wim /wimfile:install.wim /index:" + formPanel.getOsIndex() + " /mountdir:mount";
Там нет никакого способа, что это лучшее решение, но это было в значительной степени только один я мог себе выяснить. Если есть кто-нибудь с лучшей идеей, пожалуйста, дайте мне знать!
Возможно 'e.getItem() 'не равно ни одной из строк, с которыми вы сравниваете это. – Eran
Поскольку ни один из операторов if не был введен ... –
Поскольку значение по умолчанию для поля равно '0', а ваш слушатель, вероятно, никогда не выполняется или никогда не достигает' osIndex = 3'. – rom1v