0

私は 3 つの異なるクラスを持っています。それぞれが独自の GUI を持つ個別の JFrame であり、それぞれが異なることを行います。別のクラスには、上記のすべてのクラスに含まれる Keypad クラスがあります。

それactionPerformedは私の Keypad クラスの一部です:

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;

actionPerformedしかし、このような場合、CheckStockクラスでしか使用できず、他のクラスからも使用したい

4

2 に答える 2

3

各JFrameクラスで、この方法でキーパッドオブジェクトを追加します。

 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 に答える