我知道必须有一个,但是如果我添加一个Label(应该是我的背景),然后在其上绘制(而不是在所有空间上绘制),则背景不会显示。我非常确定这是因为Java完全用标准的灰色来绘制它,但是我不知道如何告诉Java不要这样做。 setOpaque
true
和false
(两者相同)仅停止更新我不想再次绘制的像素(在重新绘制之后)。
答案 0 :(得分:0)
通过覆盖paintComponent(...)
方法来完成(在任何组件上)自定义绘制。
因此,您可以扩展JLabel并添加自定义代码:
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g); // this will paint the label and its Icon
// add custom code here
}
阅读Custom Painting的Swing教程中的部分,以获取更多信息和示例。
另一种选择是扩展JPanel
并绘制Image
,然后进行自定义绘制。这样,所有绘画代码都位于一种方法中。
尝试两种方法,看看哪种方法满足您的确切要求。