2012-08-29 172 views
2

該類的構造有問題嗎?我想它的一個實例在另一個類添加到JPanel:將另一個類的面板實例添加到父面板

public class calculator2 extends JPanel { 
    public calculator2() { 
     JPanel x = new JPanel(); 
     x.setLayout(new GridLayout(0,5)); 

     x.add(new JLabel()); 
     x.add(new JButton("<<")); 
     x.add(new JLabel()); 
     x.add(new JButton(">>")); 
     x.add(new JLabel()); 
    } 
} 

這是我想使用它:

calculator2 test = new calculator2(); 
    JPanel panel3 = new JPanel(new BorderLayout()); 
    panel3.add(test, BorderLayout.SOUTH); 

我沒有得到任何類型的運行時錯誤的,它只是不顯示。當我將calculator2類中的代碼放在同一個類中時,我在代碼的第二部分中使用它。謝謝您的考慮。

這實際上只是一個例子,我有一個完整的類,使用actionlisteners之類的約25個組件,並希望使用上述方法將其添加到面板。

回答

5

在這裏,您只是創建面板,而不添加任何地方看到。嘗試使用從JPanel繼承的父項方法,而不是在構造函數中創建另一個JPanel的新實例。

這將是,只是刪除名爲x的實例。

public class calculator2 extends JPanel { 
    public calculator2() { 
    super(); 
    setLayout(new GridLayout(0,5)); 

    add(new JLabel()); 
    add(new JButton("<<")); 
    add(new JLabel()); 
    add(new JButton(">>")); 
    add(new JLabel()); 
} 
} 
+2

而且,這不是很明顯你用·Panel3中做什麼,請確保你把它添加到一個容器,它dispayable – MadProgrammer

+0

+1好貼:) – MadProgrammer

+1

我明白我的想法如何是不正確的。我不需要創建一個JPanel的實例,因爲通過使用extends關鍵字繼承了所有的方法和構造函數。謝謝! –