从其他类调用actionPerformed()

时间:2013-02-22 00:25:12

标签: java swing

我有三个不同的类,每个类都是一个单独的JFrame,有自己的GUI,每个都做不同的事情。在另一个课程中,我有了我的Keypad课程,上面所有这些课程都包含在内。

这是我的键盘课程actionPerformed的一部分:

public void actionPerformed(ActionEvent e) {
        String s = CheckStock.stockNo.getText();
        switch (e.getActionCommand()) {
        case "1":
            CheckStock.stockNo.setText(s + "1");
            break;
        case "2":
            CheckStock.stockNo.setText(s + "2");
            break;
        case "3":
            CheckStock.stockNo.setText(s + "3");
            break;

但是什么时候这样我只能在我的CheckStock课程中使用它,我也想在其他课程中使用这个actionPerformed

2 个答案:

答案 0 :(得分:3)

在每个JFrame类中,您都可以通过这种方式添加Keypad对象。

 add(new Keypad(1)); // For the first class
 add(new Keypad(2)); // For the second class
 add(new Keypad(3));// For the third class

以这种方式修改键盘类。

public class Keypad extends JPanel implements ActionListener {

        private int identifier;
 public Keypad(int identifier) {
                this.identifier = identifier;
               ..............................
               ...............................
                }

          public void actionPerformed(ActionEvent e) {
                switch(identifier)
                {
                case 1:
                String s = CheckStock.stockNo.getText();
                CheckStock.stockNo.setText(s + e.getActionCommand());
                break;
                case 2:
                //for second class
                break;
                case 3:
                // for the third class
                 break;

        }

}

答案 1 :(得分:2)

创建键盘所需的通用界面......例如KeyPadListener

在其中,声明一个类似keyPadActionPerformed的方法。现在约定会规定你应该传递某种事件对象,但你可以简单地传递一个对键盘的引用和要附加的值,即public void keyPadActionPerformed(Keypad keyPad, String value)

基本上,你KeyPad类允许其他对象在键盘事件发生时注册它们以便回调,例如KeyPad#addKeyPadListener(KeyPadListener) ......

actionPerformed方法中,您会通知所有已注册的听众发生了某个事件......

public void actionPerformed(ActionEvent e) {
    String s = e.getActionCommand();
    KeyPadListener[] listeners = getKeyPadListeners(); // You would provide this...
    if (listeners != null && listeners.length > 0) {
        for (KeyPadListener listener : listeners) {
            listener.keyPadActionPerformed(this, s);
        }
    }
}

这意味着由KeyPadListener实施决定如何处理keyPadActionPerformed事件