改变绘制椭圆的颜色

0 java swing awt object java-2d

我创建了一个名为"City"的对象

    City city = new City (name, rec, g);
Run Code Online (Sandbox Code Playgroud)

对象的构造函数如下所示:

    public City (String name, Rectangle r, Graphics g){
    this.name = name; 
    this.r = r;
    this.g = g; 
    }
Run Code Online (Sandbox Code Playgroud)

通过创建此对象,我还在上传的图片上绘制一个椭圆,并将其颜色设置为蓝色.这是我绘制对象的方式:

    g = (Graphics2D) window.lblNewLabel.getGraphics();
        g.setColor(Color.BLUE);
        g.fillOval(mouseX, mouseY, 15, 15);
Run Code Online (Sandbox Code Playgroud)

我希望以后能够在点击椭圆形本身后改变颜色.我尝试调用此函数,但它不起作用:

        public void isClicked(){
    clicked = true;
    this.color = Color.RED;
    this.g.setColor(Color.PINK);

}
Run Code Online (Sandbox Code Playgroud)

如何更改现有对象的颜色?

Rei*_*eus 5

使用getGraphics()的部件上引起瞬时图形对象被组件本身上使用.任何后续调用都repaint将擦除使用该对象完成的绘画.

通过覆盖paintComponent方法更改颜色.将Color变量保存为类成员变量,并使用它来确定方法中的椭圆颜色.

@Override
protected void paintComponent(Graphics g) {
   super.paintComponent(g);
   g.setColor(savedColor);
   g.fillOval(mouseX, mouseY, 15, 15);
}
Run Code Online (Sandbox Code Playgroud)