我在屏幕上绘制矩形时遇到问题。我的jpanel类中有paintComponent方法,我想在其中绘制一个rect。它看起来像这样:
public void paintComponent( Graphics g ) {
super.paintComponent( g );
g.setColor( Color.yellow );
g.fillRect( 0, 140, 100, 100 );
}
问题在于我有几个面板添加到我正在绘制的面板中。子面板总是显示在顶部,矩形在它们下方绘制。我怎样才能将矩形拉到前面?
答案 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所指出的,更好的方法是使用GlassPane
(How to use RootPanes)或JLayeredPane
或JLayer
(AKA JXLayer
你没有使用Java 7)