在 VB 中,您可以使用 zOrder
。
在 .Net 中,它是 .SetChildIndex
。
在你问之前,不,在这种情况下我没有使用布局管理器。如果两个组件彼此重叠,如何在它们显示后更改顺序?
由于空间不足,我有一个按钮与另一个组件(标签)的顶部略有重叠。我在按钮 之前将 JLabel 添加到表单中,当表单加载时,它看起来很好。但是,当用户单击该按钮时,JLabel 会退到后面,使它的一部分消失。有没有办法让它保持在前面?我试过将 label.grabFocus()
放在按钮的 ActionListener 中,但它不起作用。
最佳答案
默认情况下,Swing 假定组件不重叠,因此可以更有效地重绘组件。也就是说,当您更改组件的属性时,只有该组件需要重新绘制。
当组件在面板上重叠时,您需要告诉面板,这样它才能确保所有组件都按照正确的 ZOrder 重新绘制:
您可以通过覆盖 JPanel 的 isOptimizedDrawingEnabled()
方法以返回 false
来实现这一点。
JPanel panel = new JPanel()
{
@Override
public boolean isOptimizedDrawingEnabled()
{
return false;
}
}
关于java - 将 JPanel 上的组件置于前面 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7010453/