Search code examples
javaswingjscrollpaneviewportjsplitpane

How to get the dimensions of the visible part of the JScrollPane-based window


This JScrollPane based window is a top part of the JSplitPane.

getBounds(), getWidth(), getHeight() all return the full size of the window, including the invisible (scrollable) part.

I want to know the dimensions of the visible part only.


Solution

  • This is an example which print the height and width of the visible part only ,

    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTextPane;
    
    public class TestWidth {
    
        public static void main(String[] args) {
    
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            JTextPane newsTextPane = new JTextPane();
            newsTextPane.setEditable(false);
    
            JScrollPane scrollPane = new JScrollPane(newsTextPane);
    
            frame.add(scrollPane);
            frame.setSize(300, 250);
            frame.setVisible(true);
    
            System.out.println("Height : " + scrollPane.getViewport().getSize().height + "\nWidth :" + scrollPane.getViewport().getSize().width);
        }
    }