我从别人那里偷了个代码过来如下(注意中间注释掉的那两句):import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;/**
 * @author bzwm
 *
 */
public class A extends JFrame{
    public A(){
        final JPanel p1 = new JPanel();
        final JPanel p2 = new JPanel(new FlowLayout());
        JButton b = new JButton("ts...");
        b.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                p2.add(new JButton("....."));
                p2.validate();
            }
        });
        p1.add(b);
        //javax.swing.GroupLayout showGraphLayout = new //javax.swing.GroupLayout(p2);
        //p2.setLayout(showGraphLayout);
        add(p1, BorderLayout.NORTH);
        add(p2, BorderLayout.CENTER);
        setVisible(true);
        setSize(300, 300);
    }
    
    public static void main(String args[]){
        new A();
    }
}这个代码的作用是:点击那个按钮,则在另一个panel上出现一个新的按钮。
如果把那两句去掉,这个代码就不能实现我想要的功能。这是为什么啊?如果以后我一定要用那两句,怎么修改才能得到我想要的东西啊?

解决方案 »

  1.   

     javax.swing.GroupLayout showGraphLayout = new javax.swing.GroupLayout(p2);  //这句保留
    //p2.setLayout(showGraphLayout);  //这句不要代码的作用就可以了!
      

  2.   

    去掉的话,showGraphLayout 不是没有被使用吗?
      

  3.   

    就是新的按钮在 panel 中的布局效果没有应用吧,需要显示的触发下或者类似写一个界面没有应用布局器一样