我在屏幕上绘制矩形时遇到问题。我的jpanel类中有paintComponent方法,我想在其中画一个矩形。它看起来像这样:
public void paintComponent( Graphics g ) {
super.paintComponent( g );
g.setColor( Color.yellow );
g.fillRect( 0, 140, 100, 100 );
}
问题是我在我正在绘制的面板上添加了几个面板。子面板始终显示在顶部,矩形绘制在它们下方。我怎样才能使矩形被画在前面?
如果绘制的 JPanel 在容器中,那么它不可能在"前面"。您可以通过对子组件调用 setOpaque(false)
来使子组件不透明,但容器仍将始终位于其子组件后面。
如果您绝对想要一个组件高于另一个组件,请考虑使用 JLayeredPane 或考虑在顶层窗口的玻璃窗格上绘制。
没有冒犯,但我觉得这是一个坏主意......
public void paint( Graphics g ) {
super.paint( g );
g.setColor( Color.yellow );
g.fillRect( 0, 140, 100, 100 );
}
正如Hovercraft所指出的,更好的方法是使用GlassPane
(如何使用RootPanes)或JLayeredPane
或JLayer
(如果您不使用Java 7,则为JXLayer
)。