【问题标题】:How to open an internal frame如何打开内部框架
【发布时间】:2014-04-11 11:32:26
【问题描述】:

我在这个主框架中打开一个新的内部框架,我有 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 类,所以我无法访问桌面,因为现在我在 internalframe 事件中,

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

【问题讨论】:

    标签: java swing user-interface frame mdi


    【解决方案1】:

    “桌面在第 1 类,所以我无法访问桌面,因为现在我正在处理 internalframe 事件,”

    您可以做的是创建一个 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();
        }
    }
    

    当您在 Main 类中创建 DisplayInternalFrame 时,您会将 Main 实例传递给构造函数

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

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

    【讨论】:

    • 感谢您的帮助,我会尝试使用接口。
    猜你喜欢
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    相关资源
    最近更新 更多