繁体   English   中英

单击按钮打开新面板

[英]Open new panel with button clicked

Java Swing GUI:

我使用ActionListener来执行单击按钮时的操作。 我想要做的是单击按钮时,打开一个新面板,但是从其他文件加载/获取新面板。

这是我到目前为止的内容,但我只是链接到另一个文件。 谢谢! =]

   public void actionPerformed(java.awt.event.ActionEvent e) {
                    //something like this...
                    loadFile(newPlane.java);
}

更新:

        inventoryDisplay.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            inventoryDisplayActionPerformed(evt);
        }


        private void inventoryDisplayActionPerformed(java.awt.event.ActionEvent evt) {
        //open a new panel by opening a new file ex: inventory.java  
        }

我问这个的原因是因为当我用netbeans创建一个GUI程序时...我不知道如何在链接按钮时用“设计视图”制作一个新的planel。 由于netbeans仅显示主面板。

Java不能在包含的基础上工作,因此您需要定义类并实例化它们。

您可以使用静态工厂方法来获取完全配置的JPanel:

public class ClassWhereStored {
    public static JPanel newJPanel(){
        JPanel panel = new JPanel();
        // configure it
        return panel;
    }
}

...

public void actionPerformed(java.awt.event.ActionEvent e) {
    JPanel panel = ClassWhereStored.newPanel()
    frame.add(panel);          
}

对于您的代码,您需要做的是将类文件放在同一文件夹中。

即,关于以下代码...

public void actionPerformed(java.awt.event.ActionEvent e) {
    //something like this...
    loadFile(newPlane.java);
}

...您需要编译newPlane.java,获取已创建的类文件,并将其放置在与尝试“加载文件”的类相同的文件夹中。

然后,在您的类中(我假设它扩展了JFrame或JPanel),您需要这样做,而不是loadFile:

public void actionPerformed(java.awt.event.ActionEvent e) {
    newPlane plane = new newPlane();
    add(plane);
}

通常,在同一个地方编写类代码会更容易。 不要忘记,您可能必须从类中删除组件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM