【问题标题】:Open new panel with button clicked单击按钮打开新面板
【发布时间】:2010-06-05 08:23:07
【问题描述】:

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 程序时......我不知道如何在按钮被点击时使用“设计视图”制作一个新平面。由于 netbeans 只显示主面板。

【问题讨论】:

  • 不同的文件是什么意思?
  • 当按下按钮而不是在函数中创建新框架时,我想在单独的文件中创建一个新框架并将其链接到按钮。抱歉,我在描述我需要什么时遇到问题哈哈
  • 听起来你误解了 java 的工作原理......但如果我错了,你需要更清楚地指定这个其他文件的样子 - 它是像 xml 这样的配置文件吗?跨度>
  • 大声笑你可能是对的。另一个文件只是一个 java 文件,其中包含创建新面板的参数。
  • @bat 如果其中一个答案符合您的需要,则接受答案。

标签: java user-interface swing


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    即,关于以下代码...

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      • 2021-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多