如何在 Java 中添加组件并将其置于 JFrame 的前面?
Posted
技术标签:
【中文标题】如何在 Java 中添加组件并将其置于 JFrame 的前面?【英文标题】:How To Add A Component And Bring It To Front On A JFrame In Java? 【发布时间】:2017-05-17 15:45:07 【问题描述】:我正在创建一个 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
上所有先前添加的组件的前面?
【问题讨论】:
不清楚您到底想要实现什么,也不清楚您使用 JLayeredPane 尝试了什么,这听起来像是解决此问题的可行方案 我再次更新了我的问题。我的简单问题是将我添加的组件放在之前添加的所有组件的前面... 你已经包含了这个问题:“所以我的主要问题是如何将这个 myJTable 放在所有先前添加的组件的前面incomingForm?”和这个答案:“它把组件从上到下,从左到右完全传播到整个表单中:(”所以仍然不清楚你想要什么,而不是这个 @ControlAltDel 此代码incomingForm.setComponentZOrder(myJTable,0);
将我的组件置于所有其他组件之上,但它使我的表格大小在整个表单中填满意味着忽略myJTable.setSize(coloumWidth,rowHeight);
和myJTable.setLocation(xpos, ypos);
代码逻辑。那么以其他方式做什么呢?
So what to do in alternative way?
- 给了你两个建议。
【参考方案1】:
Swing默认的绘制逻辑是先绘制最后添加到面板的组件。
您可以通过使用 ZOrder 来更改此设置,就像您尝试使用已注释掉的代码一样。
但是,Swing 并不是真正设计为将组件绘制在彼此之上。组件通常位于 2D 区域,而不是 3D 区域。您这样做的原因尚不清楚。
我建议你可以:
-
使用子
JDialog
来显示表格及其数据(您可以使对话框不装饰以移除边框)。
也许使用GlassPane 来显示表格。
【讨论】:
你得到了我的愿望。我想在所有其他组件(如对话框)的顶部显示一个数据表。我将表格添加几秒钟,然后通过使用myJTable.setVisible(false);
以编程方式隐藏,这就是为什么我在其他组件上覆盖它....
在您的JDialog
提示中,我找到了***.com/a/8410677/3170029 并且还出现了adding a window to a container
的错误,这可能吗?
@SaharJabeen,这两种解决方案都不是将表格添加到框架中,您不应该这样做。两种解决方案都显示了如何在框架顶部显示表格。 JDialog 与您创建对话框、向其中添加组件并使其可见的框架完全一样。 GlassPane 是框架的一部分。阅读教程,了解如何使用它的示例。
非常感谢。最后我可以通过使用JDialog
和一些调整来做到这一点。如果你愿意,我也会在你的答案中分享它以帮助其他人......以上是关于如何在 Java 中添加组件并将其置于 JFrame 的前面?的主要内容,如果未能解决你的问题,请参考以下文章
将 UIView 作为子视图添加到 UIButton 并将其置于前面无法正常工作
如何在“vagrant up”上传递参数并将其置于 Vagrantfile 的范围内?
React GraphQL Apollo 和 Redux。如何查询数据并将其置于 store 的 initialState 中?