你没有提到它,但是你的 JFrame 和 JPanels 都是类,所以你的问题是你想从另一个类中的一个类调用一个方法?如果是这样,关键是获取对 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。