首先,如果标题很简短,我深表歉意,我已经考虑过了,但无法为我的问题提供足够简短的摘要。
我有一个由 JButtons 组成的 JPanel 类。
我有我的主要 Swing 应用程序类,它具有 Swing 组件,以及 JPanel 类。我想要做的是将我的 JPanel 类触发的 ActionEvents 分派到我的 Swing 应用程序类进行处理。我已经在网络和论坛(包括这个)上搜索了示例,但似乎无法使其正常工作。
我的 JPanel 类:
public class NumericKB extends javax.swing.JPanel implements ActionListener {
...
private void init() {
...
JButton aButton = new JButton();
aButton.addActionListener(this);
JPanel aPanel= new JPanel();
aPanel.add(aButton);
...
}
...
@Override
public void actionPerformed(ActionEvent e) {
Component source = (Component) e.getSource();
// recursively find the root Component in my main app class
while (source.getParent() != null) {
source = source.getParent();
}
// once found, call the dispatch the current event to the root component
source.dispatchEvent(e);
}
...
}
我的主要应用程序类:
public class SimplePOS extends javax.swing.JFrame implements ActionListener {
private void init() {
getContentPane().add(new NumericKB());
pack();
}
@Override
public void actionPerformed(ActionEvent e) {
...
// this is where I want to receive the ActionEvent fired from my NumericKB class
// However, nothing happens
}
}
想要编写一个单独的 JPanel 类的原因是因为我想在其他应用程序中重用它。
此外,实际代码,我的主应用程序类有许多子组件,JPanel 类被添加到其中一个子组件中,因此递归 .getParent() 调用。
任何帮助将非常感激。预先感谢!干杯。