Java 单击按钮即可动态添加组件

Java 单击按钮即可动态添加组件,java,swing,jpanel,jlabel,Java,Swing,Jpanel,Jlabel,panel6已在design中创建,但在运行时按钮未动态添加到面板中如果要使用绝对布局将jLabel添加到panel6中,则必须手动定义标签的宽度和高度 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { //removing existing panels Panel6.setLayout

panel6已在design中创建,但在运行时按钮未动态添加到面板中

如果要使用绝对布局将
jLabel
添加到
panel6
中,则必须手动定义标签的
宽度
高度

 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
       //removing existing panels


        Panel6.setLayout(null);
        JLabel label1=new JLabel("This is panel 4");
        label1.setBackground(Color.WHITE);
        jPanel6.add(label1);
        label1.setText("this is panel 4");
        System.out.println("here i am");
        jPanel6.revalidate();


        jPanel6.repaint();

    } 

在设置
jPanel6.setLayout(null)
后添加组件将一个组件置于另一个组件之上。(我认为JPanel6是一个打字错误)。
创建
jPanel6
时,为其分配布局管理器。例如:
jPanel6.setLayout(新的FlowLayout())

并更改执行的按钮1操作

label1.setWidth(100);
label1.setHeight(30);

有关布局管理器的更多信息,请参阅。

我认为我们需要查看更多代码以确定错误所在。例如,我不确定是否/如何
Panel6
jPanel6
相关。你的意思是
jLabel
没有添加?
Panel6。setLayout(null)
是你的关键问题,没有什么是调整标签的大小/定位,因为你已经取消了布局管理器,重新验证将一事无成。简而言之,不要使用空布局您也可以在添加组件dynamicallysee中看到这一点,或者只是使用适当的布局管理器并解决空布局所呈现的所有其他问题。有些人不得不浪费大量时间重新发明轮子。像素完美布局是一种错觉(1-)不要使用空布局。没有理由这样做@雅各布
有些人喜欢完美的精确度。
-然后使用布局管理器。它将计算完美的精度,每次没有猜测工作。在这样的问题中绝对没有理由使用空布局。@JacobB.,只是因为他们不知道更好的答案。因此,我们提供答案以提供良好的编码实践,这样您就不会学到不好的习惯。您仍然需要重新验证()。这就是调用布局管理器的原因,否则标签的大小仍将为(0,0),并且没有任何可绘制的内容。
   private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        JLabel label1=new JLabel("This is panel 4");
        label1.setBackground(Color.WHITE);
        jPanel6.add(label1);
        revalidate(); //remove setSize to parent, if any
   }