单击按钮动态添加组件

时间:2017-10-25 03:15:37

标签: java swing jpanel jlabel

 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();

    } 

panel6已经在设计中创建,但在运行时按钮没有动态添加到面板中

2 个答案:

答案 0 :(得分:0)

设置jPanel6.setLayout(null)后添加组件会将它们放在另一个上面。 (我认为JPanel6是一个错字) 创建jPanel6时,为其分配布局管理器。例如:
jPanel6.setLayout(new FlowLayout());

并更改jButton1ActionPerformed

   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
   }

有关布局管理器的详细信息,请参阅A Visual Guide to Layout Managers

答案 1 :(得分:-3)

如果您使用绝对布局将width添加到height,则必须手动定义标签的jLabelpanel6

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