JScrollPane – Viewport


Set Viewport Size (i.e. Extent Size)

Dimension viewExtentDim = jScrollPane1.getViewport().getExtentSize();
System.out.println("Viewport Extent Size: (" + (int) viewExtentDim.getWidth() + "w, " + (int) viewExtentDim.getHeight() + "h)");

Set View to JPanel

JPanel panel = new JPanel();
panel.setBorder(new LineBorder(Color.GREEN, 4));
panel.setPreferredSize(new Dimension(2000, 2000));
jScrollPane1.setViewportView(panel);

Set View to JTable

String[][] data = new String[][]{new String[]{"v11","v12"},new String[]{"v21","v22"}};
String[] columns = new String[]{"First","Second"};
JTable jTable = new JTable(data, columns);
jTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
jScrollPane1.setViewportView(jTable);
Note:
    Will use the JTable's JTableHeader as the ColumnHeader of the JScrollPane.

    Disable the AutoResizeMode to not stretch the JTable. 

Get Viewport Position

Point position = jScrollPane1.getViewport().getViewPosition();
System.out.println("Viewport Component Position: (" + position.x + ", " + position.y + ")");

Set Viewport Position

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

Get Viewport Component (i.e. View) Preferred Size

if (jScrollPane1.getViewport().getView() != null) {
    Dimension viewCompPrefDim = jScrollPane1.getViewport().getView().getPreferredSize();
    System.out.println("Viewport Component Prefered Size: (" + (int) viewCompPrefDim.getWidth() + "w, " + (int) viewCompPrefDim.getHeight() + "h)");
}

Get Viewport Component (i.e. View) Size

Dimension viewCompDim = jScrollPane1.getViewport().getViewSize();
System.out.println("Viewport Component Size: (" + (int) viewCompDim.getWidth() + "w, " + (int) viewCompDim.getHeight() + "h)");

Set Viewport Component (i.e. View) Size

if (jScrollPane1.getViewport().getView() != null) {
    jScrollPane1.getViewport().getView().setSize(new Dimension(2000, 2000));
    jScrollPane1.getViewport().getView().setPreferredSize(new Dimension(2000, 2000));
}

Scroll the Viewport to a Desired Rectangle

Rectangle rect = new Rectangle(200,200,500,500);
jScrollPane1.getViewport().scrollRectToVisible(rect);
Description:
    With the current possition of the Viewport's upper left corner being considered
    (0,0), scroll to make the provided Rectangle as visible as possible.

Set the Scroll Mode

jScrollPane1.getViewport().setScrollMode(JViewport.SIMPLE_SCROLL_MODE);

Description:
    Used to set the drawing mode used during scrolling the Viewport

    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