gpt4 book ai didi

java - 添加 JScrollPane 后 JTable 不显示

转载 作者:行者123 更新时间:2023-12-01 13:39:59 27 4
gpt4 key购买 nike

这是我的代码:

table = new JTable(tableModel);
final TableRowSorter<TableModel> sorter = new TableRowSorter(tableModel);
table.setRowSorter(sorter);
table.setBounds(122, 47, 162, 204);

JScrollPane scroller = new JScrollPane(table);
frame.getContentPane().add(scroller);

在我添加 JScrollPane 之前它工作得很好。现在它是空白的。我在这里做错了什么?如果您还需要任何其他信息,请告诉我。

最佳答案

@HovercraftFullOfEels 明智地指出对 Component.setBounds() 的调用把事情搞砸了:

public void setBounds(int x, int y, int width, int height)

Moves and resizes this component. The new location of the top-left corner is specified by x and y, and the new size is specified by width and height.

This method changes layout-related information, and therefore, invalidates the component hierarchy.

一般来说,您不应该调用此方法,而应该使用正确的 LayoutManager相反,它旨在管理组件的大小和位置。看看Using Layout ManagersA Visual Guide to Layout Managers欲了解更多信息。

如果您需要为表格提供默认大小,那么您可以考虑使用 JTable.setPreferredScrollableViewportSize()方法,但始终记住这个主题:Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing?

特别是在这种情况下,如果您的框架仅包含滚动 Pane ,那么此序列应该足够了:

JScrollPane scroller = new JScrollPane(table);
frame.getContentPane().add(scroller);
frame.pack();

因为框架的内容 Pane 已经有一个默认的布局管理器:BorderLayout 。最后别忘了调用frame.pack()方法。

关于java - 添加 JScrollPane 后 JTable 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20911857/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com