2010-10-08 36 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,它可讓您在不同的面板(卡)之間切換。

相關問題