我有函数 dodaj();在 JFrame 中,在这个 JFrame 中我有 JPanel。 要使用 JPanel 中的按钮,我正在使用 ActionListener。但是当有人点击按钮时我想调用函数 dodaj();来自 JFrame。 如果我在 JFrame 中有 ActionLIstener,我可以使用 this.dodaj();,但我在 JPanel 上有 Action 监听器,它是 JFrame 的组合。 我怎样才能调用 dodaj(); (JFrame 函数)来自 ActionListener 并位于 JPanel 上?
感谢您阅读它,并对我的英语不好表示歉意。
最佳答案
你没有提到这一点,但是你的 JFrame 和 JPanel 都是类,所以你的问题是你想在另一个类中调用一个类的方法吗?如果是这样,关键是获取对 JFrame 类的引用,并通过构造函数或方法参数将其传递到 JPanel 类。
例如:
class MyFrame extends JFrame {
private MyPanel myPanel;
public MyFrame() {
myPanel = new MyPanel(this);
}
public void frameMethod() {
System.out.println("in JFrame's frameMethod");
}
}
class MyPanel extends JPanel {
private MyFrame myFrame;
private JButton someButton = new JButton("Button");
public MyPanel(final MyFrame myFrame) {
this.myFrame = myFrame;
someButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
myFrame.frameMethod();
}
});
}
}
顺便说一句,如果没有充分的理由(例如需要重写方法),我不建议扩展 JFrame 或 JPanel。
关于Java - 从组合对象调用 this.function(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10165651/