当我在 paint() 方法中绘制Jpanel时(通过继承JPanel)
图形显示在我的按钮和其他UI组件的顶部,
在组件不可见,
那么如何在图形之上绘制组件?
答案 0 :(得分:2)
首先看看Performing Custom Painting和Painting in AWT and Swing
绘制方法
适用于AWT轻量级组件的规则 也适用于Swing组件 - 例如,paint()
被调用 什么时候渲染 - 除了Swing进一步因素paint()
调用三个单独的方法,这些方法在 以下顺序:
protected void paintComponent(Graphics g)
protected void paintBorder(Graphics g)
protected void paintChildren(Graphics g)
Swing程序应覆盖
paintComponent()
而不是覆盖paint()
。尽管API允许,但通常没有 覆盖paintBorder()
或paintComponents()
的理由(如果你这样做, 确保你知道你在做什么!)。这种因子分解使其更容易 程序只覆盖他们的绘画部分 需要扩展。例如,这解决了所提到的AWT问题 之前无法调用super.paint()
的任何人阻止任何 出现轻量级儿童。