从外部方法绘画

时间:2011-10-20 17:14:17

标签: java applet java-2d

在我的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 GraphicsmouseMoved

2 个答案:

答案 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)