对于panel的重画用的是构造函数的重载,为什么new的新的panel上的组件无法显示?

两个panel加入到一个frame里,对其中一个panel做鼠标响应,用于刷新此panel,对于panel的重画用的是构造函数的重载,为什么new的新的panel上的组件... 两个panel加入到一个frame里,对其中一个panel做鼠标响应,用于刷新此panel,对于panel的重画用的是构造函数的重载,为什么new的新的panel上的组件无法显示?
程序如下:

package swing;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Swing2 {
public static Panel3 p;
public static JFrame frame;
public static void main(String[] args)
{
frame=new JFrame();
frame.setVisible(true);
frame.setSize(400,200);

frame.add(new Panel2());
p=new Panel3(2);
frame.add(p);

JButton button1=new JButton();

p.button.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
frame.remove(p);
p=new Panel3(1);

p.repaint();
frame.add(p);
frame.repaint();
}
});

frame.setLayout(null);

}
}

class Panel2 extends JPanel{
Panel2(){

setBounds(200,0,200,200);
setBackground(Color.blue);
}
}
class Panel3 extends JPanel{
public static JButton button;
Panel3(int n){
setBounds(0,0,200,200);
button=new JButton();
add(button);
if (n==1)
{
setBackground(Color.green);
}else
{
setBackground(Color.yellow);
}
}

}
展开
 我来答
gao1350
2008-10-28 · 超过13用户采纳过TA的回答
知道答主
回答量:98
采纳率:0%
帮助的人:74万
展开全部
frame.setVisible(true);
frame.setSize(400,200);
这两句放在main方法的最后面。就是放在 frame.setLayout(null);这句后面。
原因:你的组件都没有初始化完成,你就已经将frame显示出来,那肯定不会有组件显示出来,除非你动一下窗口,或者点下最大化,他才会刷新出来~~
呵呵,你试试吧,我这边测试通过
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式