2017-12-21 4 views
-1

どのオブジェクトがitemStateChangedを起動したかを調べる方法を知りました。itemStateChangedを発生させたオブジェクトタイプを取得する

私はチェックボックスとドロップダウンを持っているとします。どちらも同じitemStateChangedに接続されています。そこでは、最初にどのオブジェクトが変更されたのかを判断し、オブジェクトに応じてコードを実行したいと思います。

どうすればいいですか?私はこれについて考えていました:

public void itemStateChanged(ItemEvent e) { 
    if(e.getSource() == JComboBox) { 
     // Do code 
    } 
    if(e.getSource() == JDropDown) { 
     // Some other code 
    } 
} 

しかし、JDropDownとJCheckBoxはオブジェクトであり変数ではないので、明らかに機能しません。

+0

あなたはあなたが 'instanceof'を使用するか、またはイベントソースをキャストタイプを試すことができ – XtremeBaumer

+0

を作成し、これらのクラスのインスタンスを確認することができます。 – Rupak

+1

JCheckBoxという名前のフィールドとJDropDownというフィールドがない限り、そのコードはコンパイルされません。チェックボックスとドロップダウンを参照する実際のフィールド名を使用すると、あなたの解決策が得られます。もっと良い方法は、2つの異なるリスナーを使用することです。 –

答えて

1

あなたはすべてのJCheckBoxのために同じアクションとあなたのGUI内のすべてのJDropDown要素に対して同じアクションをしたい場合は、次のコードを使用することができます:あなたが唯一の特定の要素のための特定のアクションを持っているしたい場合は

if (e.getSource() instanceof JCheckBox) { 
    // Do code 
} 
else if (e.getSource() instanceof JDropDown) { 
    // Some other code 
} 

をあなたのGUI、あなたはこれらの要素のインスタンスを保持する必要がありますクラスのメンバーとそれらのそれぞれに対してソースを確認するよう:

if (e.getSource() == checkbox1) { 
    // Do code 
} 
else if (e.getSource() == checkbox2) { 
    // do other code 
} 
else if (e.getSource() == dropDown1) { 
    // Some other code 
} 
... 
関連する問題