我正在创建一个 Java 类,它的构造函数将从其参数中获取一个 JForm
,然后以编程方式在该表单上添加一个 JTable
,如下面的代码所示...
public class DEMOCLASS
{
private JTable myJTable = new JTable();
public DEMOCLASS(JFrame incomingForm)
{
incomingForm.add(myJTable);
myJTable.setSize(coloumWidth,rowHeight);
myJTable.setLocation(xpos, ypos);
myJTable.setVisible(true);
//incomingForm.setComponentZOrder(myJTable,0); // Its Bringing The Component To From But Spreading It All Over The Form From Top To Bottom And Left To Right Fully :(
}
}
现在的主要问题是,在调用此类的地方,有许多组件已通过其他编码添加,我想将 myJTable
组件放在前面,但现在隐藏在它们后面。简而言之,我无法控制其他已经添加的组件。我还听说过 MyGlassPane
和 JLayeredPane
但无法让它们与我的概念一起工作。
所以我的主要问题是如何将此 myJTable
放在 incomingForm
上所有先前添加的组件的前面?
最佳答案
Swing 的默认绘制逻辑是先绘制最后添加到面板的组件。
您可以通过使用 ZOrder 来更改此设置,就像您尝试处理注释掉的代码一样。
然而,Swing 并不是真正设计为将组件绘制在彼此之上的。组件通常放置在 2D 区域中,而不是 3D 区域中。您这样做的原因尚不清楚。
我建议你可以:
- 使用子
JDialog
来显示表格及其数据(您可以使对话框未修饰以删除边框)。 - 也许可以使用GlassPane显示表格。
关于java - 如何在 Java 中添加组件并将其置于 JFrame 的前面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41445392/