0

私はプログラムに取り組んできましたが、コードの大部分を含む私のマスタークラスには、20 を超える異なる「addActionListener」メソッドがあります。代わりに、このactionListener、itemStateChangedなどを別のクラスで作成しながら、現在と同じように実行するにはどうすればよいですか。このクラスで既に 4000 行以上のコードを実行したので、どんなヒントでも大歓迎です :( ありがとう!

4

3 に答える 3

3
public class MyActionListener implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent evt) {
        // actionPerformed here...
    }
}

次のように使用します。

JButton button = new JButton();
button.addActionListener(new MyActionListener());

// OR

MyActionListener listener = new MyActionListener();
JButton button = new JButton();
button.addActionListener(listener);
于 2013-11-03T19:03:32.823 に答える
1
class Mylistener implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e){
         if (e.getSource() == someButton){
             // do something
         } else if (e.getSource() == someOtherButton){
             // do something
         } 
         // add more else if statements for other components
         // e.getSource() is the component that fires the event e.g. someButton
    }
}

ボタンが 2 つあるとします。

JButton someButton = new JButton("SOME BUTTON");
JButton someOtherButton = new JButtton("SOME OTHER BUTTON");

ActionListener listener = new MyListener();

someButton.addActionListener(listener);
someOtherButton.addActionListener(listener);

編集:

public MyClass extends JFrame {

    JButton someButton = new JButton("SOME BUTTON");
    JButton someOtherButton = new JButtton("SOME OTHER BUTTON");

    public MyClass(){

        ActionListener listener = new MyListener();
        someButton.addActionListener(listener);
        someOtherButton.addActionListener(listener);
    }

    class Mylistener implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e){
         if (e.getSource() == someButton){
             // do something
         } else if (e.getSource() == someOtherButton){
             // do something
         } 
         // add more else if statements for other components
         // e.getSource() is the component that fires the event e.g. someButton
    }
}
于 2013-11-03T19:04:12.797 に答える
1

ActionListener を実装するクラスを書きたいとします。ここではほとんど説明せずにコードを提供できますが、次のドキュメントを参照することをお勧めします: http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

このリンクはいくつかの例を提供し、それがどのように機能するかを詳細に説明します。これが役立つことを願っています。

于 2013-11-03T19:04:39.467 に答える