在运行时将组件添加到jpanel

时间:2012-09-30 09:49:03

标签: java swing jpanel

JPanel上有JButtonJFrame 在运行时将JLabel添加到JPanel点击JButton

我使用以下代码:

 panel.setLayout(null);

 jLabel _lbl=new jLabel();
 _lbl.setText("Label");
 panel.add(_lbl);
 panel.validate();

JLabel中没有显示任何JPanel

1 个答案:

答案 0 :(得分:13)

我看到你创建了一个名为JLabel的{​​{1}}:

_lbl

但你永远不会把它添加到你的面板。相反,您可以在面板中添加一个没有文字的新 JLabel _lbl=new JLabel();

JLabel

这将构成一个不可见的空标签。

在添加 panel.add(new JLabel()); 之后,尝试在revalidate()个实例上调用repaint()JPanel,如下所示:

JLabel

使用此功能,您可能还需要在帧实例上调用JLabel _lbl=new JLabel("Label");//make label and assign text in 1 line panel.add(_lbl);//add label we made panel.revalidate(); panel.repaint(); ,以便调整pack()的大小以适应新组件。

另外请永远不要使用JFrame / null布局这是非常糟糕的做法(除非做动画)并且可能被证明是有问题且非常难以使用。

而是使用Absolute

或者如果LayoutManager上只有一个组件,只需致电JPanel,因为它会延伸到add(label);尺寸。

<强>更新

这是一个小样本。每次按下JPanel时,只需将JLabel添加到JPanel

JButton