Bring a component on a JPanel to front (Java)

David picture David · Aug 10, 2011 · Viewed 20.3k times · Source

In VB, you can use zOrder. In .Net, it's .SetChildIndex.

Before you ask, no I'm not using a layout manager in this case. If you have two components on top of each other, how do you change the order after they have already been displayed?

I have a button that slightly overlaps on top of another component (label), due to the lack of space. I added the JLabel to the form before the button, and when the form loads, it looks fine. However when the user clicks the button, the JLabel goes to the back, making a chunk of it disappear. Is there a way to keep it to the front? I have tried putting label.grabFocus() in the button's ActionListener but it did not work.

Answer

Dragon8 picture Dragon8 · Aug 10, 2011

you can also use the LayeredPane of your JFrame. With JFrame.getLayeredPane() you get a reference of the pane in use.

the add method of LayeredPane has up to 2 additional int parameters. the first specified the Layer of the component you'd add and the second contols the order inside this layer.

You can find more infos at http://download.oracle.com/javase/tutorial/uiswing/components/rootpane.html#layeredpane