fillRect没有显示

时间:2012-09-19 02:56:46

标签: java swing graphics jpanel paint

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

public void paintComponent( Graphics g ) {

    super.paintComponent( g );

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

}

问题在于我有几个面板添加到我正在绘制的面板中。子面板总是显示在顶部,矩形在它们下方绘制。我怎样才能将矩形拉到前面?

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

没有冒犯,但我觉得这是一个坏主意......

public void paint( Graphics g ) {

    super.paint( g );

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

}

正如Hovercraft所指出的,更好的方法是使用GlassPaneHow to use RootPanes)或JLayeredPaneJLayer(AKA JXLayer你没有使用Java 7)