将一个组件放在JPanel上(Java)

Dav*_*vid 10 java swing focus actionlistener

在VB中,您可以使用zOrder.在.Net中,它是.SetChildIndex.

在你问之前,在这种情况下,我没有使用布局管理器.如果您有两个组件在彼此之上,如何在显示后更改订单?

由于空间不足,我有一个按钮略微重叠在另一个组件(标签)的顶部.我在按钮之前将JLabel添加到表单中,当表单加载时,它看起来很好.然而,当用户点击按钮时,JLabel会向后移动,使其中的一大块消失.有没有办法让它保持在前面?我试过放入label.grabFocus()按钮的ActionListener,但它没有用.

小智 7

您还可以使用JFrame的LayeredPane.使用JFrame.getLayeredPane(),您可以获得正在使用的窗格的引用.

LayeredPane的add方法最多有2个额外的int参数.第一个指定了你要添加的组件的层,第二个指定了该层内的顺序.

您可以在http://download.oracle.com/javase/tutorial/uiswing/components/rootpane.html#layeredpane找到更多信息.


cam*_*ckr 7

当组件在面板上重叠时,您需要告诉面板,以便它可以确保它在适当的ZOrder中重新绘制组件:

您可以通过重写isOptimizedDrawingEnabled()JPanel 的方法来返回false.