1

我在屏幕上绘制矩形时遇到问题。我的 jpanel 类中有paintComponent 方法,我想在其中绘制一个矩形。它看起来像这样:

public void paintComponent( Graphics g ) {

    super.paintComponent( g );

    g.setColor( Color.yellow );
    g.fillRect( 0, 140, 100, 100 );

}

问题是我在要绘制的面板中添加了几个面板。子面板始终显示在顶部,而矩形绘制在它们下方。我怎样才能使矩形画在前面?

4

2 回答 2

4

如果绘制的 JPanel 在容器中,那么它就不可能在“前面”。您可以通过调用子组件使子组件不透明setOpaque(false),但容器仍将始终位于其子组件的后面。

如果您绝对想要一个组件在另一个之上,请考虑使用 JLayeredPane 或考虑在顶层窗口的玻璃窗格上绘图。

于 2012-09-19T02:59:57.260 回答
3

无意冒犯,但我觉得这是个坏主意...

public void paint( Graphics g ) {

    super.paint( g );

    g.setColor( Color.yellow );
    g.fillRect( 0, 140, 100, 100 );

}

正如 Hovercraft 指出的那样,更好的方法是使用GlassPane( How to use RootPanes ) 或 a JLayeredPaneor JLayer(AKAJXLayer如果您不使用 Java 7)

于 2012-09-19T03:12:20.647 回答