如何打开内部框架



我在这个主框架中打开一个新的内部框架,我有两个类,

    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);

这可能不是您想要的确切设置,但它显示了如何将功能从一个类提供到另一个类。

相关内容

  • 没有找到相关文章

最新更新