在我的applet中,我有一个方法paint
在屏幕上绘制。
public void init() {
addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseMoved(MouseEvent evt) {
storeCoordinates(evt,Graphics g); // results in error
}
});
}
public void paint(Graphics g) {
// do something
}
public void storeCoordinates(MouseEvent evt , Graphics g) {
// from this method i want to modify the scene painted by paint
}
现在在另一种方法中,我想修改由paint
方法绘制的一点场景。我怎样才能做到这一点 ?就像我想用另一种方法中的g.drawLine(.,.,.,.)
绘制蓝线一样。
当我从) expected
; expected
cannot find symbol variable Graphics
,mouseMoved
答案 0 :(得分:2)
所以在这种情况下我会做的就是不使用那里的图形。相反,我会做这样的事情......保留一个点列表,当你点击时,将点添加到你的列表中。然后当你画画时,画出你的分数。 (如果你只是在点击,你可以只存储最后一点,在当前点和最后一点之间画一条线,并将最后一点设置为当前点。但这更具可扩展性。)
List<Point> points = new ArrayList<Points>();
public void init() {
addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseMoved(MouseEvent evt) {
storeCoordinates(evt); // graphics removed
}
});
}
public void paint(Graphics g) {
for(int i = 1; i < points.size(); i++) {
Point first = points.get(i - 1);
Point second = points.get(i);
g.setColor(Color.BLUE);
g.drawLine(first.getX(), first.getY(), second.getX(), second.getY());
}
}
public void storeCoordinates(MouseEvent evt) {
int x = evt.getX();
int y = evt.getY();
points.add(new Point(x,y));
}
将图形对象作为参数传递给其他方法。
public void paint(Graphics g) {
externalPaint(g);
}
private void externalPaint(Graphics g) {
g.drawLine(1,2,3,4);
}
答案 1 :(得分:1)
现在在另一种方法中,我想修改由paint方法绘制的场景。我怎么能这样做?
致电Component.repaint(int,int,int,int)
或JComponent.repaint(Rectangle)
。