簡體   English   中英

將可滾動的jpanel添加到gridlayout

[英]add a scrollable jpanel to a gridlayout

我正在建立一個充滿標簽的網格。 其中之一包含html文本,應將其大小調整為最大格式並可以滾動。 我找到了添加JScrollPane的方法,但是它保持一行高度,即使給它400x400的大小,我也找不到如何調整它的大小...

刪除getViewport()會得到相同的結果。

JPanel grid = new JPanel(new GridLayout(1,2));

// first cell of the grid
grid.add(new JLabel("title"));

// second cell of the grid, this should be the scrollable one   
JScrollPane scroll = new JScrollPane();
scroll.getViewport().setSize(400, 400);
scroll.getViewport().add(new JLabel("<html>long<br>html<br>text</html>"));
grid.add(scrollVersion, BorderLayout.CENTER);   

有任何想法嗎 ?

非常感謝 ...

GridLayout不遵守其布局組件的首選大小。 它旨在使所有網格單元具有相同的大小。 一種替代方法是使用GridBagLayout,但是我個人會推薦ZoneLayout ,它(在我看來)更簡單,同樣強大且更加直觀。 使用備忘單,您不會出錯。

另外,BorderLayout.CENTER是用於BorderLayout的約束,與GridLayout不兼容。 將組件添加到GridLayout的所有者時,無需提供約束。 使用GridLayout從左上角的單元格開始,從左到右添加組件。

將您的GridLayout替換為GridBagLayout 有了正確的約束集,它應該像魅力一樣工作。 顯然,請看一些示例 ,因為GridBagLayout看起來很復雜,但是對於一些示例來說卻很簡單。

GridLayout的所有單元格都設計為具有相同的大小,因此,如果您希望一個單元格大於整個單元格,則必須使用另一個LayoutManager,例如Riduel建議的GridBagLayout。

另外,如果您的JLabel將有多行,我建議您將其替換為不可編輯的JTextPane或JTextArea

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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