在拖动时更改对象颜色

时间:2014-03-17 21:35:39

标签: java swing colors drag-and-drop

我正在尝试获得一个以黑色开始的圆圈,以便在拖动时将颜色更改为红色。我被告知我需要更改Circle以使其具有Color属性和位置,并更改更新方法,以便更改Color以及位置。 但我不知道该怎么做。 任何帮助都会被批评,谢谢。

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

public class Circle  extends JPanel{
    private double x;
    private double y;
    private double r;
    Color color;
    Graphics g;
    private Color Circle;



    public Circle(double x, double y, double r, Color color) {
        this.x = x;
        this.y = y;
        this.r = r;

        this.color = color;
    }

    public void draw(Graphics g) {



        g.setColor(Color.red);


        g.fillOval((int)Math.round(x-r),(int)Math.round(y-r),
            (int)Math.round(2.0*r),(int)Math.round(2.0*r));




    }



    public double distanceTo(double x, double y) {
        return (Math.abs(this.x-x) + Math.abs(this.y-y));
    }

    public void update(double x, double y)  {
         this.x = x;
         this.y = y;










    }





    }

2 个答案:

答案 0 :(得分:2)

g.setColor(Color.red);

请勿对用于绘制圆圈的颜色进行硬编码。相反,你的类可以有setColor(...)和getColor(...)等方法。然后绘画代码将使用:

g.setColor(getColor());

现在,在MouseListner的mousePressed()方法中,您可以使用:

setColor( getDraggingColor );

并且在mouseReleased中你可以使用:

setColor( getForeground() );

因此,您需要在创建类时存储拖动颜色。

此外,由于您在组件上进行自定义绘制,因此应该覆盖面板的paintComponent()方法以绘制圆形。创建draw(...)方法确实可以做任何事情。

答案 1 :(得分:0)

您需要重新绘制组件才能生效。

更新颜色后调用此方法。

this.repaint();