4

次の2つのアプローチでJComponentにアクションリスナーを追加することの違いを理解するのを手伝ってください。

最初の方法: クラスに actionListener を実装し、イベントに基づいて選択を選択する共通の actionPerformed メソッドを追加する

class Test implements ActionListener  
{
    JButton jbutton = null;
    public Test(){
        jbutton = new JButton();
        jbutton.addActionListener(this);
    }

    public void actionPerformed(ActionEvent e){
        //Perform operation here;
    }
}

2 番目の方法: 個々の JComponent のアクション リスナーを定義します。

JButton jbutton = new JButton();              
button.addActionListener(new ActionListener() {         
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        //Perform operation here    
    }
});

これらの 2 つのアプローチと、どちらがよりクリーンで保守しやすいアプローチであるかの違いは何ですか?また、効率的な利点がある場合はどうなりますか?

4

1 に答える 1

3

次の場合、最初のアプローチを使用します。

  • アクションは、さまざまなイベントを介して起動されます。たとえば、GUI の言語を英語からアラビア語に変更するアクションがあり (コンポーネントを右から左に配置するように再配置する必要があります)、そのアクションは( )Alt + RJMenuItem、およびおそらくいくつかのボタンを介して。

  • いくつかのアクションには同じ基本コードがあります。たとえば、各数学演算ボタンが同じアクションを起動し、アクション コマンドに基づいて内部から演算を決定できる電卓アプリケーションですactionPerformd()。GUI の更新を共有します。

次の場合、2番目のアプローチを使用します。

  • アクションは 1 つのイベントにのみ関連付けられており、その場で書きたいとします。

私がしないことは、これに似たものです:

public class MainFrame extends JFrame implements ActionListener

しかし、私は次のように書きます:

public class CustomListener implements ActionListener

以下も参照してください。

于 2013-05-13T18:29:13.340 に答える