私は、コンソールコマンドを実行するはずのソフトウェアを作成しています。このコマンドは、実際のアプリケーションで設定した構成によって異なります。なぜ0ではないが、この整数は0を返しますか?
問題は、コマンドのうちの1つ(合計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のプロ」を選択した場合、変数osIndexは、例えば3に設定されているものとします。
これが実行されますコマンドです:
"dism /mount-wim /wimfile:install.wim /index:" + formPanel.osIndex + " /mountdir:mount"
しかし、いくつかの奇妙な理由で、それは私が選択した...そして私は、なぜ分からない、リスト内のどの項目に関係なく、osIndexに0を返していませんか?
このコードを使用すると、リストでそのコードを選択すると、正しい値の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を返します。私は、何とか、私がリストアイテムを変更するときにそうする必要があります。それは、配列内のコマンドが変数に代入されるポイントです。どのようにこれを行うには良いアイデアですか?
編集2:これで解決しました。これが最善の解決策であるという方法はありません
cmdExec.cmd[3] = "dism /mount-wim /wimfile:install.wim /index:" + formPanel.getOsIndex() + " /mountdir:mount";
が、それはかなり私は現在、把握できただけだった:私は「行く」ボタンをクリックすると、それがに、アレイ内のコマンドテキストを設定します。もっと良いアイディアがあれば教えてください!
変数おそらく 'e.getItem(更新するたびに新しいコマンド文字列を作成するために必要とされているようです'あなたがそれを比較する文字列のどれと同じではありません。 – Eran
ifステートメントのどれも入力されていないので... –
フィールドのデフォルト値は '0'なので、リスナーは決して実行されないか、' osIndex = 3'に到達しないでしょう。 – rom1v