Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何打开内部框架_Java_Swing_User Interface_Frame_Mdi - Fatal编程技术网

Java 如何打开内部框架

Java 如何打开内部框架,java,swing,user-interface,frame,mdi,Java,Swing,User Interface,Frame,Mdi,我在这个主框架中打开一个新的内部框架,我有两个类 DisplayInternalFrame aDisplay = new DisplayInternalFrame(name, surname); desktop.add(aDisplay); aDisplay.setMaximum(true); aDisplay.show() 我有一个桌面窗格及其名称desktop,这是我的主框架,应用程序运行时内部框架正在加载 现在我的第二个类是internalframe,它有

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

    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上,因此我无法访问桌面,因为我现在处于internalframe事件中

基本上,当人们把桌子上的一个项目推到内部框架上时,打开一个新的内部框架,或者类似的东西

“桌面位于类1上,因此我无法访问桌面,因为我现在处于internalframe事件中,”

您可以做的是创建一个
接口
,方法是
addToDesktop

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

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

谢谢你的帮助,我将尝试使用一个界面。