JScrollpane needs to shrink its width

前端 未结 1 544
小蘑菇
小蘑菇 2020-12-06 17:22

I have a JScrollpane that has a JPanel on the inside (and the panel contains some JLabels).

I want resizing the scroll pane to

相关标签:
1条回答
  • 2020-12-06 18:06

    Probably the best method is to have the contained component always be the same width as the viewport. To do this the first contained component (the one that is the child to JViewPort, passed into the JScrollPane constructor or set as the viewportView) needs to implement javax.swing.Scrollable. The key method is getScrollableTracksViewportWidth, which should return true.

    Here's a quick and dirty scrollable 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;
        }
    }
    
    0 讨论(0)
提交回复
热议问题