gpt4 book ai didi

java - PaintComponent 完成后更改 JComponent 的颜色

转载 作者:行者123 更新时间:2023-12-01 23:23:17 25 4
gpt4 key购买 nike

我正在测试一个扩展 JComponent 的小部件类
widget的构造函数包含一个 vector 并设置组件的PreferredSize,然后是paintComponent:

public void paintComponent(Graphics g){
g.setColor(Color.RED);
g.drawString("this is text one", 10, 10);
//here I draw some shapes based on the
//vector size and integers
}
}

组件正确绘制,之后我在 main 中调用一些其他方法,当这些方法完成其工作时,我调用 widget.methodsFinished():

methodsFinished(){
g.setColor(Color.GREEN);
g.drawString("this is text two", 30, 30);
this.update(g);
}

这样做我得到了空指针异常,你能告诉我如何正确更新此组件中已绘制形状的颜色吗,提前谢谢你。

最佳答案

can you tell me how to correctly update the color of already drawn shapes in this component, thank you in advance.

并不是那么难:

  1. 在类上下文中声明一个私有(private) Color 字段。
  2. 声明一个公共(public) setShapeColor(Color color) 来设置组件的颜色
  3. 调用repaint()以反射(reflect)颜色变化
  4. 警告:不要忘记在 paitnComponent(Graphics) 函数中调用 super.paintComponent(g);,而您还没有调用该函数完成了。

     class MyComponent extends JPanel
    {
    private Color shapeColor = Color.RED;

    public void setShapeColor(Color color)
    {
    this.shapeColor = color;
    }

    @Override
    public void paintComponent(Graphics g){
    super.paintComponent(g);
    g.setColor(shapeColor);
    g.drawString("this is text one", 10, 10);
    //here I draw some shapes based on the
    //vector size and integers
    }
    }
    }

尽管按照 OOP 原则,您实际上应该声明一个具有 Color 属性的 MyShape 类,并在绘制之前使用 setter 方法作为示例来设置形状的颜色。

关于java - PaintComponent 完成后更改 JComponent 的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20387349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com