我试图在一个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调用的 .
帮我 . 我现在该怎么办?