2016-12-23 28 views
0

這看起來可能是一個非常新手的問題,但我似乎無法找到這種情況的答案。 How to Use Panels教程說在JPanel中有add()方法,但我無法在我的代碼中實現它。向JPanel添加標籤並在Eclipse中不建議添加方法

public class JPanelTest extends AbstractView { 
    private final JPanel panel; 

public JPanelTest() { 
    this.panel = new JPanel(new BorderLayout()); 
} 

private void initComponents() { 
    JLabel label = new JLabel("label testing "); 
    this.panel.add(label); 
} 
} 

AbstractView是延伸JPanel並實現ViewSupportPropertyChangeListener的抽象類。

在代碼this.panel.add(label);的最後一行給出了編譯錯誤。 我沒有看到在Eclipse中建議的Panel.add()。 建議的添加相關方法是addAncestorListener,addNotify,addVetoableChangeListener

如何在建議的框中看不到簡單的添加方法? 我正在使用Eclipse的1.6編譯級別。這會有所作爲嗎?

在此先感謝!

+0

你從哪兒弄來的AbstractView?它不是構建到Java SDK中。 – richersoon

回答

0

你從哪裏得到AbstractView?這不是建立在Swing hierachy。在你的類名

基地也許你想延長JPanel代替AbstractView

public class JPanelTest extends JPanel { 
2

您創建的JPanel,面板,但它添加到什麼。所以是的,它正在接收JLabel,但是由於JLabel和麪板JPanel都不會添加到主GUI窗口(JFrame?)顯示的任何內容中,因此不會顯示任何內容。

解決方案:將面板JPanel或JLabel本身添加到this對象(希望添加到頂層窗口/ JFrame中)。

因此,要麼:

private void initComponents() { 
    JLabel label = new JLabel("label testing "); 
    this.panel.add(label); 
    this.add(panel); 
} 

private void initComponents() { 
    JLabel label = new JLabel("label testing "); 
    // this.panel.add(label); 
    this.add(label); 
} 
+0

謝謝。 這不是關於無法在GUI上顯示它,而是更多關於爲什麼我得到一個編譯錯誤和日食並沒有建議一個簡單的添加方法。 我複製你的代碼並粘貼它,編譯錯誤消失了。 在Eclipse中這似乎很奇怪。 –

+0

@ In-youngChoung:你有自己的名爲'JPanel'的類嗎?如果是這樣,你會混淆編譯器(和你自己)。 –

+0

@ In-youngChoung:如果你的問題是關於編譯錯誤(抱歉沒有完全查看它),那麼總是發佈完整的錯誤消息,而不僅僅是解釋它。 –