[英]JTable doesn't show after adding JScrollPane
這是我的代碼:
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)
移動並調整其大小。 左上角的新位置由
x
和y
指定,新大小由width
和height
指定。此方法更改與布局有關的信息,因此使組件層次結構無效。
通常,您永遠不要調用此方法,而應使用適當的LayoutManager來管理組件的大小和位置。 有關更多信息,請參見 使用布局管理器和可視化指南 。
如果需要為表提供默認大小,則可以考慮使用JTable.setPreferredScrollableViewportSize()方法,但請始終牢記以下主題: 我應該避免在Java Swing中使用set(Preferred | Maximum | Minimum)Size方法?
特別是在這種情況下,如果您的框架僅包含滾動窗格,則此順序應足夠:
JScrollPane scroller = new JScrollPane(table);
frame.getContentPane().add(scroller);
frame.pack();
因為框架的內容窗格已經具有默認的布局管理器: BorderLayout 。 最后不要忘了調用frame.pack()方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.