0

我有三个不同的类,每一个都是一个单独的 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其他类中使用它

4

2 回答 2

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;

        }

}
于 2013-02-22T18:29:11.590 回答
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事件

于 2013-02-22T01:00:26.260 回答