我正在测试一个扩展JComponent的小窗口小部件 窗口小部件的构造函数包含一个向量并设置组件的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);
}
通过这样做我得到了nullpointer异常,你能告诉我如何正确更新这个组件中已绘制形状的颜色,谢谢你提前。
答案 0 :(得分:3)
你能告诉我如何正确更新已经绘制的颜色 这个组件中的形状,提前谢谢。
不是那么强硬:
setShapeColor(Color color)
以将颜色设置为组件repaint()
以反映颜色变化作为警告:不要忘记在super.paintComponent(g);
函数中调用paitnComponent(Graphics)
,这是您尚未完成的。
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原则,您实际上应该使用MyShape
属性声明Color
类,并且在绘制之前使用setter方法作为示例将颜色设置为形状。