簡體   English   中英

添加JScrollPane后JTable不顯示

[英]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)

移動並調整其大小。 左上角的新位置由xy指定,新大小由widthheight指定。

此方法更改與布局有關的信息,因此使組件層次結構無效。

通常,您永遠不要調用此方法,而應使用適當的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM