2012-11-20 58 views
-1

我剛剛在GridBagLayout中爲分割窗格做了一個佈局。 工作完美,看起來不錯。ScrollPane內的GridbagLayout Java Swing

然後我需要垂直添加一個滾動條。因此我現在已經這樣做了。 但是,佈局不像以前那樣「大小」。 它現在延伸到所示窗格的區域。

JSplitPane VPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,(new class1()),new JScrollPane(new class2(),ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER)); 

我需要使它看起來像以前一樣。有任何想法嗎?

+2

請張貼一個[SSCCE](http://sscce.org)我討厭這樣的冒險猜測 –

+0

Hi = D 我已經發布了有效'破壞'我的網格佈局佈局的代碼。 不太確定還有其他什麼發佈? – Jay

+2

@ user1203297:究竟是什麼效果帶來了這條線的加入,以及它在添加之前的樣子,是沒有人能夠想象的,或者是直覺中的肖像。這就是爲什麼需要[SSCCE](http://sscce.org/) –

回答

3

你所做的只是「隱藏」水平滾動條。這對管理組件的視口沒有任何影響。

嘗試在Scrollable接口中包裝現有佈局。如果你不希望實現一個你自己,你可以使用的包裝容器,而不是...

public class ScrollableWrapper extends JPanel implements Scrollable { 

    private Component wrapper; 

    public ScrollableWrapper(Component wrapper) { 
     setLayout(new BorderLayout()); 
     add(wrapper); 
     this.wrapper = wrapper; 
    } 

    @Override 
    public Dimension getPreferredScrollableViewportSize() { 
     return wrapper.getPreferredSize(); 
    } 

    @Override 
    public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) { 
     return 64; 
    } 

    @Override 
    public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) { 
     return 64; 
    } 

    @Override 
    public boolean getScrollableTracksViewportWidth() { 
     return true; 
    } 

    @Override 
    public boolean getScrollableTracksViewportHeight() { 
     return false; 
    } 

} 

然後,我們將其添加到您的滾動窗格......

JSplitPane VPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,new class1(),new JScrollPane(new ScrollableWrapper(class2())));