【问题标题】:Desktop application - how do I dynamically create and destroy forms桌面应用程序 - 如何动态创建和销毁表单
【发布时间】:2011-04-23 00:51:46
【问题描述】:

我正在使用 java 为桌面创建一个小型加密应用程序。

我在 Oracle 中使用 JFrames (import javax.swing.JFrame) Linux 下的 JDeveloper 11g。

我想要一个“欢迎”表单/框架供用户选择 他们的加密方法,然后选择方法, 我想为 选择的加密方法以及销毁/释放/处置() 欢迎表格。当用户完成加密后, 他们应该关闭框架/表单(通过单击 右上角的 x - 或使用退出按钮或任何 方法)和欢迎框架应该动态重新创建 并出现。

我尝试了各种方法 - btnEncode_actionPerformed(ActionEvent e) 然后 this.dispose() - 我已经摆弄了 this_windowClosed(WindowEvent e) 和 dispose(),但似乎没有任何效果。

即使使用 setVisibl(true/false) 的解决方法在 这个阶段 - 这整天都在破坏我的头。这是很 在 Delphi 中很容易做到!

TIA 和 rgs,

保罗...

【问题讨论】:

    标签: java frames dynamic destroy


    【解决方案1】:

    我整理了这个简单的示例,用于根据用户选择创建和显示面板。

    public class Window extends JFrame {
    
    public Window() {
        this.setLayout(new BorderLayout());
        JComboBox encryptionCombobox = new JComboBox();
        encryptionCombobox.addItem("foo");
        encryptionCombobox.addItem("bar");
        //...
        encryptionCombobox.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // find choices and the correct panel
                JPanel formPanel = new JPanel();
                formPanel.setOpaque(true);
                formPanel.setBackground(Color.RED);
                //...
                Window.this.add(formPanel, BorderLayout.CENTER);
                Window.this.validate();
                Window.this.repaint();
            }
        });
        add(encryptionCombobox, BorderLayout.NORTH);
    }
    
    public static void main(String[] args) {
        new Window().setVisible(true);
    }
    }
    

    当我想到它时,您可能应该改用 CardLayout,它允许您在不同的面板(卡片)之间切换。

    【讨论】:

      【解决方案2】:

      这样的东西通常可以解决问题:(注意我还没有测试过)

      public class WelcomeMsg extends JFrame
      .
      .
      .
      public void btnContinue_actionPerformed(ActionEvent e)
      {
          this.dispose();
          SwingUtilities.invokeLater(new Runnable(){ new JFrameAppropriateWindow(args) });
      }
      

      其中 btnContinue 是欢迎表单上的继续按钮,而 JFrameAppropriateWindow 是您希望根据用户选择显示的下一帧。 Args 是您需要传递的任何参数。

      准备就绪后,您可以简单地处理当前帧并重新启动 WelcomeMsg 的实例

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-06
        • 1970-01-01
        • 2016-05-20
        相关资源
        最近更新 更多