[英]repaint() Method in java not calling the paint() method?
這是我的代碼
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JFrame;
import javax.swing.JPanel;
import com.leappainter.model.GetXYCoordinatesPOJO;
public class DrawXY extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
private int x;
private int y;
private int d;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getD() {
return d;
}
public void setD(int d) {
this.d = d;
}
@Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(Color.RED);
g2d.drawOval(getX(), getY(), 30, 30);
System.out.println("painting");
}
public void draw() {
JFrame frame = new JFrame("Leap Draw");
frame.add(new DrawXY());
frame.setSize(600, 600);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void update(GetXYCoordinatesPOJO getxy) {
// TODO Auto-generated method stub
setX((int) getxy.getX());
setY((int) getxy.getY());
setD((int) getxy.getD());
//System.out.println(getX());
DrawXY draw = new DrawXY();
draw.repaint();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
通過更新值的函數調用Update方法,但是兩次后未調用paint方法。
您正在其他實例上調用重繪!
改變...
public void update(GetXYCoordinatesPOJO getxy) {
// TODO Auto-generated method stub
setX((int) getxy.getX());
setY((int) getxy.getY());
setD((int) getxy.getD());
//System.out.println(getX());
DrawXY draw = new DrawXY(); // < -- YOU CREATE NEW INSTANCE HERE
draw.repaint();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
至
public void update(GetXYCoordinatesPOJO getxy) {
// TODO Auto-generated method stub
setX((int) getxy.getX());
setY((int) getxy.getY());
setD((int) getxy.getD());
//System.out.println(getX());
repaint();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
並查看VGR的評論... +1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.