2017-01-25 10 views
0

私は、コンソールコマンドを実行するはずのソフトウェアを作成しています。このコマンドは、実際のアプリケーションで設定した構成によって異なります。なぜ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"; 

が、それはかなり私は現在、把握できただけだった:私は「行く」ボタンをクリックすると、それがに、アレイ内のコマンドテキストを設定します。もっと良いアイディアがあれば教えてください!

+1

変数おそらく 'e.getItem(更新するたびに新しいコマンド文字列を作成するために必要とされているようです'あなたがそれを比較する文字列のどれと同じではありません。 – Eran

+0

ifステートメントのどれも入力されていないので... –

+0

フィールドのデフォルト値は '0'なので、リスナーは決して実行されないか、' osIndex = 3'に到達しないでしょう。 – rom1v

答えて

2

何も返されません。デフォルト値は単に再割り当てされません。

リアルテスト - デバッガを使用していくつかのブレークポイントを設定します。 System.outは何か

をテストするための薄片状の方法です。しかし、あなたの文字列が細かい印刷されているので、)あなたはそのosIndexが

+0

OPの編集に基づいて、if文と比較が正しく機能します。 – Eran

+0

そのコードがどこから呼び出されたのかは不明ですが、 –

+0

@Eran元の投稿を問題の実際のもので更新しました。だから私は問題を知っています(少なくともいくつかの進歩がありますが)更新方法はわかりません –

関連する問題