有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java更改绘制的椭圆形的颜色

我创建了一个名为“城市”的对象

    City city = new City (name, rec, g);

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

    public City (String name, Rectangle r, Graphics g){
    this.name = name; 
    this.r = r;
    this.g = g; 
    }

通过创建这个对象,我还在上传的图片上绘制了一个椭圆形,并将其颜色设置为蓝色。以下是我如何绘制对象:

    g = (Graphics2D) window.lblNewLabel.getGraphics();
        g.setColor(Color.BLUE);
        g.fillOval(mouseX, mouseY, 15, 15);

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

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

}

如何更改现有对象的颜色


共 (2) 个答案

  1. # 1 楼答案

    使用Graphics对象绘制对象后,将在屏幕上渲染这些对象。你不能直接改变它们的颜色,相反,当你想改变它们时,你必须随时重新绘制图形。如果要跟踪对象的颜色,必须将数据存储在某种变量中,并在绘制时使用它

  2. # 2 楼答案

    在组件上使用getGraphics()会导致在组件本身上使用瞬态图形对象。对repaint的任何后续调用都将删除使用该对象完成的绘制

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

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