我有一个主面板。它包含 SubPanel1、SubPanel2 等。SubPanel 可以具有 JComponent 的任意组合,如按钮、单选按钮、文本框等。一个 SubPanel 可能与另一个相同,也可能不同。
如何让 MainPanel 监听并响应 SubPanels 内发生的操作?请给我看一些带有注释代码的好例子,它教我如何做到这一点。
照片 -
代码收集自Oracle JavaSE 教程:
public class Beeper ... implements ActionListener {
...
//where initialization occurs:
//notice this line
button.addActionListener(this);
...
public void actionPerformed(ActionEvent e) {
...//Make a beep sound...
}
}
这就是您通常注册处理程序的方式吗???
这是什么意思???
button.addActionListener(this);
这意味着,只要该按钮对象发生操作,就调用当前对象的(this指)* actionPerformed方法。因此,如果您传递MainPanel的引用而不是this并且您的主面板有一个方法actionPerformed并且它实现了ActionListener *,那么每当按钮触发一个事件时,您的 Mainwindows 的 * actionPerformed ** 就会被调用。
所以改变了这一行:
button.addActionListener(RefOfMainPanel);
就这样。是的,就这么简单:)
在 MainPanel 中创建您的动作侦听器并在子面板中使用相同的侦听器。事件源应让您识别生成事件的子面板。