Java JList Item Move moveHome(JList list)

Here you can find the source of moveHome(JList list)

Description

move Home

License

Apache License

Declaration

public static void moveHome(JList list) 

Method Source Code


//package com.java2s;
/*//from   w  ww .j a va 2s  .  c o  m
 * Copyright 2000-2009 JetBrains s.r.o.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import javax.swing.*;
import java.awt.*;

public class Main {
    public static final int ROW_PADDING = 2;

    public static void moveHome(JList list) {
        list.setSelectedIndex(0);
        list.ensureIndexIsVisible(0);
    }

    public static void ensureIndexIsVisible(JList list, int index, int moveDirection) {
        int visible = getVisibleRowCount(list);
        int top;
        int bottom;
        if (moveDirection == 0) {
            top = index - (visible - 1) / ROW_PADDING;
            bottom = top + visible - 1;
        } else if (moveDirection < 0) {
            top = index - ROW_PADDING;
            bottom = index;
        } else {
            top = index;
            bottom = index + ROW_PADDING;
        }
        ensureRangeIsVisible(list, top, bottom);
    }

    private static int getVisibleRowCount(JList list) {
        return list.getLastVisibleIndex() - list.getFirstVisibleIndex() + 1;
    }

    public static void ensureRangeIsVisible(JList list, int top, int bottom) {
        int size = list.getModel().getSize();
        if (top < 0) {
            top = 0;
        }
        if (bottom >= size) {
            bottom = size - 1;
        }
        Rectangle cellBounds = list.getCellBounds(top, bottom);
        if (cellBounds != null) {
            cellBounds.x = 0;
            list.scrollRectToVisible(cellBounds);
        }
    }
}

Related

  1. canMoveDown(JList list)
  2. movePageUp(JList list)