java jpanel调用构造函数的时候就开始执行repaint_在JFrame上使用两个JPanel时,是否未执行绘制请求?...

我试图在一个Jframe上使用两个JPanel . 我正在使用容器将它们添加到框架中 . 因此,当我将第一个Jpanel添加到框架时,将调用Paint Component方法,但是当我将第二个JPanel添加到框架时,JVM不会调用paint Component方法 .

这是代码,

public class Frame {

public Frame() {

// TODO Auto-generated constructor stub

}

public static void main(String[] args) {

JFrame gui = new JFrame();

gui.setTitle("Chain Reaction ;-) ");

gui.setSize(650,650);

gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

gui.setLocationRelativeTo(null);

gui.setVisible(true);

Container Pane = gui.getContentPane();

Panel1 myPane1 = new Panel1(Pane);

}

}

这里我在构造函数中将Panel1(JPanel)对象添加到JFrame . 我将容器引用传递给构造函数 .

public class Panel1 extends JPanel {

Container myPane;

public Panel1(Container myPane) {

this.myPane = myPane;

myPane.add(this);

addMouseListener(new event(myPane));

}

@Override

public void paintComponent(Graphics g) {

g.drawRect(200, 200, 400, 400);

}

public class event extends MouseAdapter {

Container myPane;

public event(Container myPane) {

this.myPane = myPane;

}

@Override

public void mouseClicked(MouseEvent e) {

Panel2 myPanel2 = new Panel2(myPane);

}

}

}

(Panel1类具有侦听鼠标单击的事件类,单击鼠标时创建Panel2的对象)

public class Panel2 extends JPanel {

Container myPane;

public Panel2(Container myPane) {

this.myPane = myPane;

myPane.add(this);

}

@Override

public void paintComponent(Graphics g) {

g.drawRect(400, 400, 200, 200);

}

}

Panel2通过构造函数接收引用Container,然后绘制一个rectange,这个paint请求不是由JVM调用的 .

帮我 . 我现在该怎么办?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值