我在这个主框架中打开一个新的内部框架,我有两个类,
DisplayInternalFrame aDisplay = new DisplayInternalFrame(name, surname);
desktop.add(aDisplay);
aDisplay.setMaximum(true);
aDisplay.show()
我有一个桌面窗格和它的名称desktop,这是我的主框架,当应用程序运行时,内部框架正在加载,
现在我的第二个类是internalframe,它有一个表,我想在人们推送表项时打开新的内部框架,我的表名是errorTable
private void errorTableMouseClicked(java.awt.event.MouseEvent evt) {
errorInternalFrame acceptFrame = new errorInternalFrame();
desktop.add(acceptFrame);
桌面在类1上,所以我无法到达桌面,因为现在我在内部框架事件上,
基本上,当人们在内部框架上推表上的项目时,打开一个新的内部框架,或者类似的东西。
说:"桌面在1级,所以我无法到达桌面,因为现在我在内部框架事件中。"
您可以使用addToDesktop
的方法创建一个interface
public interface AddableDesktop {
public void addToDesktop();
}
然后在你的课上用桌面,实现它
public class Main extends JFrame implements AddableDesktop {
private JDesktopPane desktop;
@Override
public void addToDesktop() {
errorInternalFrame acceptFrame = new errorInternalFrame();
desktop.add(acceptFrame);
acceptFrame.setVisible(true);
}
}
您还需要将Main
实例(它是AddableDesktop
的实例)传递给DisplayInternalFrame
。然后可以调用addToDesktop
方法。
public class DisplayInternalFrame extends JInternalFrame {
private AddableDesktop addableDesktop;
public DisplayInternalFrame(String name, String surname, AddableDesktop ad) {
this.addableDesktop = ad;
}
...
private void errorTableMouseClicked(java.awt.event.MouseEvent evt) {
addableDesktop.addToDesktop();
}
}
当您在Main
类中创建DisplayInternalFrame
时,您将把Main
实例传递给构造函数
DisplayInternalFrame aDisplay =
new DisplayInternalFrame(name, surname, Main.this);
这可能不是您想要的确切设置,但它显示了如何将功能从一个类提供到另一个类。