当前位置: 代码迷 >> J2SE >> paintComponent使用的有关问题
  详细解决方案

paintComponent使用的有关问题

热度:2470   发布时间:2013-02-25 00:00:00.0
paintComponent使用的问题
Java code
import java.awt.BasicStroke;import java.awt.Color;import java.awt.Dimension;import java.awt.Graphics;import java.awt.Graphics2D;import javax.swing.JPanel;import org.omg.CORBA.PUBLIC_MEMBER;public class Circle extends JPanel{    private int value;    public Circle(){            }    public Circle(int value){        this.value = value;    }    public int getValue(){        return value;    }        public void setValue(int value){        this.value = value;                //System.out.print(value);        repaint();            }           protected void paintComponent(Graphics g){        super.paintComponent(g);        int clockRadius = (int)(Math.min(getWidth(), getHeight())*0.8*0.5);        int xCenter = getWidth()/2;        int yCenter = getHeight()/2;        g.setColor(Color.RED);        g.drawOval(xCenter-clockRadius, yCenter-clockRadius, 2*clockRadius, 2*clockRadius);                  //System.out.print(value);                     int line1 = (int)(clockRadius);        int line1X = (int) (xCenter-clockRadius*Math.cos(value*(2*Math.PI/60)));        int line1Y = yCenter+value;        g.drawLine(xCenter, yCenter, line1X, line1Y);        }    public Dimension getPreferredSize() {        return new Dimension(100,100);    }    }


这是我写的一段画出线条的类代码,经过调试后发现当我在不断改变value值后,通过system.out.print在setValue()函数中显示value的值是在不断变化的,可是在protected void paintComponent(Graphics g)中打印的value值却一直是0没有变化,所以我的图像根本不会有变化一直是静止的,这是为什么呢

------解决方案--------------------------------------------------------
探讨
Java code

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.JPanel;

import org.omg.CORBA.PUBLI……