JScrollPane – Row Header


Set Row Header Size (i.e. Extent Size)

if(jScrollPane1.getRowHeader() != null){
    Dimension extentDim = jScrollPane1.getRowHeader().getExtentSize();
    System.out.println("Row Header Extent Size: (" + (int) extentDim.getWidth() + "w, " + (int) extentDim.getHeight() + "h)");
}

Set Row Header to JPanel

JPanel panel = new JPanel();
panel.setBorder(new LineBorder(Color.RED, 4));
panel.setPreferredSize(new Dimension(200, 2000));
jScrollPane1.setRowHeaderView(panel);

Get Row Header Position

if(jScrollPane1.getRowHeader() != null){
    Point position = jScrollPane1.getRowHeader().getViewPosition();
    System.out.println("Row Header Component Position: (" + position.x + ", " + position.y + ")");
}

Set View to JTextArea

JTextArea textArea = new JTextArea();
jScrollPane1.setViewportView(textArea);
Note:
    The JTextArea will match its size to the size of the text.

Set Row Header Position

if (jScrollPane1.getRowHeader() != null && jScrollPane1.getRowHeader().getView() != null) {
    jScrollPane1.getRowHeader().setViewPosition(new Point(100, 100));
}

Get Row Header Component (i.e. View) Preferred Size

if (jScrollPane1.getRowHeader() != null && jScrollPane1.getRowHeader().getView() != null) {
    Dimension prefDim = jScrollPane1.getRowHeader().getView().getPreferredSize();
    System.out.println("Row Header Component Prefered Size: (" + (int) prefDim.getWidth() + "w, " + (int) prefDim.getHeight() + "h)");
}

Get Row Header Component (i.e. View) Size

if (jScrollPane1.getRowHeader() != null) {
    Dimension compDim = jScrollPane1.getRowHeader().getViewSize();
    System.out.println("Row Header Component Size: (" + (int) compDim.getWidth() + "w, " + (int) compDim.getHeight() + "h)");
}
Note:
    To ensure proper automatic scrolling, set the height of the Row Header's View
    to match jScrollPane1.getViewport().getViewSize().getHeight()

Set Row Header Component (i.e. View) Size

if (jScrollPane1.getRowHeader() != null && jScrollPane1.getRowHeader().getView() != null) {
    jScrollPane1.getRowHeader().getView().setSize(new Dimension(3000, 3000));
    jScrollPane1.getRowHeader().getView().setPreferredSize(new Dimension(3000, 3000));
}
Note:
    To ensure proper automatic scrolling, set the height of the Row Header's View
    to match jScrollPane1.getViewport().getViewSize().getHeight()

Scroll the Row Header to a Desired Rectangle

if (jScrollPane1.getRowHeader() != null) {
    Rectangle rect = new Rectangle(200,200,500,500);
    jScrollPane1.getRowHeader().scrollRectToVisible(rect);
}
Description:
    With the current possition of the Row Header's upper left corner being considered
    (0,0), scroll to make the provided Rectangle as visible as possible.

Set the Row Header Scroll Mode

if (jScrollPane1.getRowHeader() != null) {
    jScrollPane1.getRowHeader().setScrollMode(JViewport.BACKINGSTORE_SCROLL_MODE);
}

Description:
    Used to set the drawing mode used during scrolling the Row Header

    BLIT_SCROLL_MODE (default): A fast method of drawing (Bit Block Transfer) that uses Graphics.copyArea
    BACKINGSTORE_SCROLL_MODE: Painting will start at this JViewport (not an ancestor)
    SIMPLE_SCROLL_MODE: Redraw from stratch everytime