2017-07-11 66 views
0

我有一個相對較大的文本,它由單個JLabel表示。文本將被添加到的JPanel組件中。Swing JScrollPane填充一個維度並滾動另一個

我希望文本在x軸上填充面板中的所有可用空間並僅在y軸上提供滾動。另外,當面板縮放時,滾動和文本對齊也會相應地改變。

所以,考慮下面的代碼示例:

JPanel panel = new JPanel(new GridBagLayout()); 
JLabel desc = new JLabel("largelarge text"); 
JScrollPane scrollPane = new JScrollPane(desc, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, 
       JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
panel.add(scrollPane, gbc constraints here); 

有什麼建議?

+0

請發佈您的[mcve] –

+1

考慮使用不可編輯的JTextArea(如果文本全部爲一種字體)或JEditorPane(如果文本爲HTML),而不是JLabel。 – VGR

回答

1

我想文本,以填補在x軸上的面板中的所有可用空間,並提供了在y軸的滾動

你需要創建一個自定義面板和落實Scrollable界面。

您將實施getScrollableTracksViewportWidth()方法返回「true」,getScrollableTracksViewportHeight()方法返回「false」。您還需要實現接口的其他方法以提供合理的值。

或者,您可以使用Scrollable Panel實現具有默認行爲的所有Scrollable接口方法,並提供允許您更改行爲的方法。

相關問題