我想将JTable添加到布局为空的JPanel中。JPanel包含其他组件。我必须在适当的位置添加JTable。


当前回答

JTable应该添加到JScrollPane中,而JScrollPane实际上应该添加到JPanel中。

JPanel应该有一些布局管理器。

如果你不关心组件大小的精度,你可以使用纯BorderLayout,并将其与FlowLayout和GridLayout结合起来。如果你需要精度-使用jgoodies FormLayout。

FormLayout是非常棘手的一个,但是您可以使用WindowBuilder(嵌入到Eclipse中)并查看它生成的代码。这可能看起来很复杂,但这只是一种无知。

祝你好运。

其他回答

不要使用空布局。学习使用LayoutManagers:

http://download.oracle.com/javase/tutorial/uiswing/layout/using.html

LayoutManagers允许您正确地处理窗口大小调整或动态组件计数。它们一开始可能看起来很吓人,但它们值得你努力去学习。

如果你使用空布局管理器,你总是需要设置一个组件的边界。 这就是你的问题所在。

你应该按照每个人的建议去做,使用一些布局管理器,它们可以节省时间。 去@jzd的帖子里看看教程吧。

享受吧,博罗。

当一个组件有一个“null”布局时,你必须自己管理布局,这意味着你必须为组件的子组件计算尺寸和位置,以决定它们被绘制在哪里。除非绝对必要,否则会很乏味。

如果你真的想要那种细粒度的控制,也许可以先试试GridBagLayout,然后再去处理UI的排列。

JPanel panel = new JPanel();
JTable table = new JTable(rowData, colData);
JScrollPane scrollPane = new JScrollPane(table);
panel.add(scrollPane, BorderLayout.CENTER);
panel.setSize(800, 150);
panel.add(table);
panel.setLocationRelativeTo(null);
panel.setVisible(true);

希望这能有所帮助。

您可以使用以下代码。将JTable添加到JPanel。

JPanel panel = new JPanel();
this.setContentPane(panel);
panel.setLayout(null);
String data[][] = {{"1.", "ABC"}, {"2.", "DEF"}, {"3.", "GHI" }};
String col[] = {"Sr. No", "Name"};
JTable table = new JTable(data,col);
table.setBounds(100, 100, 100, 80);
panel.add(table);
setVisible(true);
setSize(300,300);