问题: 我不知道将我的绘图代码放在什么地方。
任何从JComponent派生的组件的绘图代码应该属于paintComponent 方法。参看
自定义绘图概览获得详细信息。
问题: 我绘制的材料没有显示出来。
先检查你的组件是否显示了。 解决常见组件问题 将帮助你解决这个问题。
问题: 我的applet的背景显示出来了,但是前景内容没有显示出来。
你是否误解了在一个JApplet子类中直接绘图呢?如果是的话,那么你的内容会被为每个JApplet实例自动创建的内容面板(content
pane)遮盖。作为替代,创建执行绘图的另一个类,然后将它加入JApplet的内容面板。参看 绘图 得到Swing中的绘图如何工作的更多信息。
问题:
我的组件的前景显示了,但是背景不可见。结果是在我的组件下面的一个或者多个组件变得可见,而这不是我期望的。
确保你的组件是不透明的。例如
JPanel缺省情况下是不透明的。要想使得其它组件,例如JLabel不透明,你必须对它们调用 setOpaque(true) 。
如果你的自定义组件扩展
JPanel或者一个更特殊的 JComponent 派生组件,那么你可以在绘制你的组件的自己的内容前通过调用 super.paintComponent
绘制背景。
你可以自己绘制背景,在paintComponent方法的最上面使用下面的代码:
g.setColor(getBackground());
g.fillRect(0, 0, getWidth(),
getHeight());
g.setColor(getForeground());
问题:
我使用setBackground设置组件的背景色,但是它好像不起作用。
很可能你的组件没有绘制背景,要么是因为它是透明的,要么是你的自定义绘制代码没有绘制背景。例如,如果你为JLabel设置背景色,你必须也调用setOpaque(true)使得标签的背景被绘制。更多帮助,请参看前面的问题。
问题: 我使用和指南的范例中一样的代码,但是它不能工作。为什么?
代码是否在和指南的范例中一样的方法中?例如,如果指南的范例的代码在
paintComponent 方法中,那么这个方法可能是代码保证可以工作的唯一的地方。
问题: 我如何绘制粗线?图案?
JavaTM 2D
API提供实现带宽度和式样的直线以及填充和绘制形状这样的图案的扩展支持。参看 2D图形 教材获得使用Java 2D API的更多信息。
如果你在上面的列表中没有找到你的问题,参看 解决常见组件问题 和 解决常见图层问题。[@more@]
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9650775/viewspace-924254/,如需转载,请注明出处,否则将追究法律责任。