我有三个不同的类,每个类都是一个单独的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
答案 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
事件