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

repaint()不调用paintComponent()
今天写东西的时候遇到了,以前也这样写过,一直是通过的,但是今天突然今天不调用paintComponent(),debug单步确实不进入paintComponent(),这是咋回事
简化了代码如下:
public class TestR extends JPanel {

public void drawMe() {
System.out.println("TestR's drawMe");
this.repaint();
}

@Override
protected void paintComponent(Graphics g) {
// TODO Auto-generated method stub
System.out.println("重新显示成功");
}

}


------解决方案--------------------
楼主还是需要贴出来代码,你这抽象出来的代码实际上是可以调用的,给你看看
下面的代码是完全有你预想的效果的
Java code

import javax.swing.*;
import java.awt.*;

public class TestR extends JPanel {

    public void drawMe() {
        System.out.println("TestR's drawMe");
        this.repaint();
    }

    @Override
    protected void paintComponent(Graphics g) {
    // TODO Auto-generated method stub
        System.out.println("重新显示成功");
    }

    public static void main(String[] args){
        JFrame frame=new JFrame("demo");
        TestR panel=new TestR();
        frame.getContentPane().add(panel);
//        panel.drawMe();
        frame.pack();
        frame.setVisible(true);
    }

}