我有一个GUI im建筑来说明树。我扩展的JPanel没有显示我在构建JPanel时创建的JLabel。这是我的JPanel代码:
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);
}
}
以下是我测试它的代码:
NodePanel n1 = new NodePanel(Integer.toString(root.getWeight()));
HuffmanGUI.tp.add(n1);
n1.setBounds((tpWidth / 2) - (panelDim / 2), vertSpace, panelDim, panelDim);
这段代码在一个动作监听器调用的方法中,我知道它有效,因为面板显示了它应该的位置,但是Jlabel没有显示在它里面。为什么会这样?
答案 0 :(得分:1)
很难分辨,因为我们不知道代码的使用方式。看起来您正在将null布局与布局管理器混合。
我可能猜测您是将面板添加到可见的GUI中,而您没有在面板上使用revalidate(),因此标签没有大小。
如果您需要更多帮助,请发布展示问题的SSCCE。