import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Graphics;
public class TankWar extends JPanel{
private int x=50,y=50;
public TankWar(){
//this.setBackground(Color.GRAY);

}
protected void painComponent (Graphics g){
super.paintComponent(g);
Color c=g.getColor();
g.setColor(Color.red);
g.drawString("hello", 20, 40);
g.fillOval(x, y, 30, 30);
g.setColor(c);
//x+=5;
}
public static void main(String[] args){
JFrame jf=new JFrame("坦克游戏");
TankWar t=new TankWar();

jf.getContentPane().add(t);
jf.setResizable(false);
jf.setSize(800, 600);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
jf.validate();
}
}
为什么画出的图形都不显示呢??

解决方案 »

  1.   

    下次重写一个方法的时候一定记得名字要正确,你没有重载paintComponent()
    package com.gloomyfish.swing.rounedpanel;import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Graphics;import javax.swing.JFrame;
    import javax.swing.JPanel;public class TankWar extends JPanel {
    /**
     * 
     */
    private static final long serialVersionUID = -368574037499289446L;
    private int x = 50, y = 50; public TankWar() {
    // this.setBackground(Color.GRAY); } protected void paintComponent(Graphics g) {
    // super.paintComponent(g);
    Color c = g.getColor();
    g.setColor(Color.red);
    g.fillOval(x, y, 30, 30);
    g.setColor(c);
    g.drawString("hello", 20, 40);
    // x+=5;
    } public static void main(String[] args) {
    JFrame jf = new JFrame("坦克游戏");
    TankWar t = new TankWar();
    jf.setResizable(false);
    jf.setSize(800, 600);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jf.getContentPane().setLayout(new BorderLayout());
    jf.getContentPane().add(t, BorderLayout.CENTER);
    jf.setVisible(true);
    // jf.validate();
    }
    }
      

  2.   

    楼上正解,painComponent书写错误,肯定是手写的。可以直接点击重载方法即可。paintComponent
      

  3.   

    手写的话,加上@Override有拼写错误的话也编译不了