我正在制作一个 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来显示表格。