-1

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

我在 Linux 下将 JFrames (import javax.swing.JFrame) 与 Oracle JDeveloper 11g 一起使用。

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

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

在这个阶段,即使是使用 setVisibl(true/false) 的解决方法也是可以接受的——这整天都在破坏我的脑袋。在Delphi中很容易做到!

TIA 和 rgs,

保罗...

4

2 回答 2

0

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

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

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

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

于 2010-10-08T18:29:55.690 回答
0

我将这个简单的示例放在一起,用于根据用户选择创建和显示面板。

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,它允许您在不同的面板(卡片)之间切换。

于 2010-10-08T18:49:22.447 回答