2012-10-19 44 views
1

我剛開始使用鞦韆。我開始掌握它。鞦韆導航 - 基本

但是我得到了關於擺動畫面導航的問題。

我這是怎麼了結構化的應用程序。

  • 公共級的大型機擴展JFrame的
  • 公共類LoginPanel擴展JPanel
  • 公共類HomeScreenPanel擴展JPanel

在大型機我有以下代碼:

public class MainFrame extends JFrame { 

    public MainFrame() { 
     initUI(); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       MainFrame ex = new MainFrame(); 
       ex.setVisible(true); 
      } 
     }); 
    } 

    private void initUI(){ 
     InputScreenPanel inputScreenPanel = new InputScreenPanel(); 
     getContentPane().add(inputScreenPanel); 
     Dimension dim = new Dimension(400, 300); 
     setMinimumSize(dim); 
    } 
} 

在LoginPanel我初始化屏幕並添加一個按鈕和一個文本框。我爲按鈕單擊事件編寫了事件處理程序。我想從文本框中獲取值並將用戶重定向到HomeScreenPanel。當這個按鈕點擊執行時,如何切換面板是上下文是LoginPanel,並且我沒有參考框架,因此我可以切換面板。

+0

我認爲,首先你必須開始編碼之前的設計方案。爲此,您可以嘗試實現MVC模式。 – manas

+0

你可以選擇一個'CardLayout'以及公正面板 – Robin

回答

3

我認爲你有2個選擇在這裏:

  1. 創建InputScreenPanel時,您可以通過大型機對象作爲參數。你應該問自己,你的InputScreenPanel知道你的MainFrame是否合理。在某些情況下,它可能,但根據你的例子,我會說不,然後去做第二種選擇。
  2. 您可以(如果你使用的是模型 - 視圖 - 控制器設計或後面的任何模型結構)爲您InputScreenPanel某種事件處理程序的結構。用戶將登錄,這將創建一個事件,MainFrame(或另一個類)可以響應該事件。
+0

第一個選項是一個真正的設計缺陷 – manas

+0

對於任何專業應用,是之間進行切換。不過,這是可能的,所以我提到了它。 MVC是幾乎所有場景中最好的選擇。 – DieterDP

+0

只是一個簡單的問題,因爲我的一位同事說我應該處理框架併爲每個新面板創建一個新框架..我感覺這是不正確的。我對嗎? – Dragan

1

我會使用某種模型/控制器,能夠對程序的不同部分內的變化作出反應。

我這個接口控制器,以便您可以替換的實施不影響應用

基本的休息,這將意味着在登錄窗格和家庭窗格就不會在乎他們是如何被顯示

2

您應該使用一個JDialog作爲登錄部分,然後開始你的應用程序在新的JFrame