我正在使用java为桌面创建一个小型加密应用程序。
我正在使用JFrames(导入javax.swing.JFrame)和Oracle Linux下的JDeveloper 11g。
我希望有一个“欢迎”表单/框架供用户选择 他们的加密方法,然后选择方法, 我想动态创建适当的表单 选择加密方法,也破坏/释放/ dispose() 欢迎表格。当用户完成加密时, 他们应该关闭框架/形式(通过点击 右上角的x - 或使用退出按钮或任何 方法)和动态重建欢迎框架 并出现。
我尝试过各种各样的东西 - btnEncode_actionPerformed(ActionEvent e) 然后this.dispose() - 我摆弄了this_windowClosed(WindowEvent e) 并且dispose(),但似乎没有任何效果。
使用setVisibl(true / false)的解决方法也是可以接受的 这个阶段 - 这一整天都在破坏我的头脑。这是很 在Delphi中很容易做到!
TIA和rgs,
...保
答案 0 :(得分: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的实例
答案 1 :(得分: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代替,它允许你在不同的面板(卡片)之间切换。