2011-07-16 63 views
0

我有一个图形用户界面的建筑来说明一棵树。我扩展的JPanel不显示我在构建JPanel时创建的JLabel。这里是我的JPanel代码:Swing Jlabel没有显示

class NodePanel extends JPanel { 
    private JLabel content; 

    NodePanel() { 
     this.setLayout(new FlowLayout()); 
     this.setBorder(new LineBorder(Color.black)); 
    } 

    NodePanel(String str) { 
     this.setLayout(new FlowLayout()); 
     this.setBorder(new LineBorder(Color.black)); 

     content = new JLabel(str); 
     this.add(content); 
    } 
} 

和这里是IM测试它的代码:

NodePanel n1 = new NodePanel(Integer.toString(root.getWeight())); 

HuffmanGUI.tp.add(n1); 
n1.setBounds((tpWidth/2) - (panelDim/2), vertSpace, panelDim, panelDim); 

此代码是在通过一个动作侦听器调用的方法,我知道它的工作原理是因为面板显示在它应该达到的地方,但Jlabel没有显示在里面。为什么会这样呢?

回答

1

很难说,因为我们不知道如何使用代码的上下文。看起来你正在将空布局与布局管理器混合在一起。

我可能会猜测您将面板添加到可见的GUI中,并且您没有在面板上使用revalidate(),因此标签没有大小。

如果您需要更多帮助,请发布证明问题的SSCCE。

+0

你叫它。不调用revalidate()是问题。 – Bill