日期:2014-05-20  浏览次数:20902 次

为什么Java写的图形界面改变窗口大小后,组件才可能显示出来
我定义了两个JPanel,p1和p2,先将p1添加到窗口上,然后点击按钮再将p2添加到p1上,下面写的这段代码为什么点击按钮后p2显示不出来,只有稍微改变下窗口大小p2才能显示出来?求解

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;


public class panel extends JFrame{

private JPanel p1,p2;
private JButton b;

public panel(){
b = new JButton("add");
p1 = new JPanel();
p1.setSize(444, 444);
p1.setBackground(Color.BLACK);
p2 = new JPanel();
p2.setPreferredSize(new Dimension(200,200));
p2.setBackground(Color.RED);
  b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
p1.add(p2);
p1.repaint();
}
  });
this.add(p1, BorderLayout.CENTER);
this.add(b, BorderLayout.SOUTH);
this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
setBounds(0,0,400, 300);
this.setVisible(true);
}
public static void main(String[] args) {
new panel();
}
}


------解决方案--------------------
validate