我有一個JScrollpane
,其內部有JPanel
(面板包含一些JLabel
s)。JScrollpane需要縮小寬度
我想要調整滾動窗格的大小,以實際更改其大小(可能低於內部組件的首選大小),而不僅僅是視口的大小。
當用戶縮小滾動窗格太小時,目標是讓內部面板優雅地消失(在我的miglayout中使用特定的縮小優先級等)。
我有一個JScrollpane
,其內部有JPanel
(面板包含一些JLabel
s)。JScrollpane需要縮小寬度
我想要調整滾動窗格的大小,以實際更改其大小(可能低於內部組件的首選大小),而不僅僅是視口的大小。
當用戶縮小滾動窗格太小時,目標是讓內部面板優雅地消失(在我的miglayout中使用特定的縮小優先級等)。
可能最好的方法是讓包含的組件始終與視口的寬度相同。要做到這一點,第一個包含的組件(即JViewPort
的子節點,傳入JScrollPane
構造函數或設置爲viewportView
)需要實現javax.swing.Scrollable
。關鍵方法是getScrollableTracksViewportWidth
,應返回true
。
這裏有一個快速和骯髒的滾動的JPanel:
public class ScrollablePanel extends JPanel implements Scrollable {
public Dimension getPreferredScrollableViewportSize() {
return getPreferredSize();
}
public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) {
return 10;
}
public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) {
return ((orientation == SwingConstants.VERTICAL) ? visibleRect.height : visibleRect.width) - 10;
}
public boolean getScrollableTracksViewportWidth() {
return true;
}
public boolean getScrollableTracksViewportHeight() {
return false;
}
}
的問題是相當不清楚我,但你也許可以監控JScrollPane的大小的變化,當它變得比一些下界(隱藏順利反應)。 – 2010-04-28 11:44:10
看起來,當JViewport的大小發生變化時,做一些愚蠢的重新佈局是唯一的辦法。 (爲了澄清,我基本上在一個滾動窗口的視口內有一個表格,我希望滾動窗格能夠確定表格的哪些行顯示,但我不希望它影響到顯示的列,我想要做什麼是爲不同的列指定一個收縮優先級,以便縮小文本框的水平尺寸將開始截斷特定的列。) – Mike 2010-04-28 22:41:04