如何打开内部框架

时间:2014-04-11 11:32:26

标签: java swing user-interface frame mdi

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

    DisplayInternalFrame aDisplay = new DisplayInternalFrame(name, surname);
    desktop.add(aDisplay);
    aDisplay.setMaximum(true);
    aDisplay.show()

我有一个桌面窗格及其名称桌面,这是我的主框架,内部框架在应用程序运行时加载,

现在我的第二个类是internalframe,它有一个表,我想在人们推送一个表项时打开新的内部框架,我的表名是errorTable

 private void errorTableMouseClicked(java.awt.event.MouseEvent evt) {

 errorInternalFrame acceptFrame = new errorInternalFrame();

 desktop.add(acceptFrame); 

桌面是在1级,所以我无法访问桌面,因为我现在正在使用内部框架事件,

基本上当人们在内部框架上推动桌面上的项目时,打开一个新的内部框架,或类似的东西。

1 个答案:

答案 0 :(得分:0)

  

“桌面在1级,所以我无法访问桌面,因为我现在正在使用内部框架事件,”

您可以使用interface

的方法创建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();
    }
}

DisplayInternalFrame课程中创建Main时,您会将Main实例传递给构造函数

DisplayInternalFrame aDisplay = 
                     new DisplayInternalFrame(name, surname, Main.this);

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