单击按钮打开新面板

时间:2010-06-05 08:23:07

标签: java user-interface swing

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只显示主面板。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

即,与以下代码有关......

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

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

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

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

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