2010-10-08 35 views
-1

我正在使用java为桌面创建一个小型加密应用程序。桌面应用程序 - 如何动态创建和销毁表单

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

我希望有一个“欢迎”的形式/帧,用户可以选择 自己的加密方法,然后在选择方法, 我要动态地创建为 选择的加密方法的适当的形式,也破坏/免费/处置() 的欢迎表格。当用户完成他们的加密时,他们应该关闭框架/窗体(通过点击右上角的 x或使用退出按钮或任何 方法),并且应该动态地重新创建欢迎框 和出现。

我已经试过各种事情 - btnEncode_actionPerformed(ActionEvent的五) 然后this.dispose() - 和我拨弄着this_windowClosed(WindowEvent五) 和Dispose()方法,但似乎没有任何工作。

即使是使用setVisibl(true/false)的解决方法,在 这一阶段也是可以接受的 - 这已经让我整天头脑发热。在Delphi中很容易做到的 !

TIA和RGS,

保罗...

回答

0

这样的事情通常做的伎俩:(注意我没有测试过这一点)

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

其中btnContinue是继续按钮在您的欢迎表单上,根据用户的选择,JFrameAppropriateWindow是您想显示的下一个框架。参数是你需要传递的参数。

当你准备好了,你可以简单地处理当前帧,然后重新启动WelcomeMsg

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

相关问题