Java JList Select selectRow(int row, ListSelectionModel model)

Here you can find the source of selectRow(int row, ListSelectionModel model)

Description

select Row

License

Apache License

Declaration

protected static void selectRow(int row, ListSelectionModel model) 

Method Source Code

//package com.java2s;
/*/*from   www. j  ava2 s . co m*/
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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 java.awt.Adjustable;
import javax.swing.JComponent;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.table.TableModel;

public class Main {
    /**
     * Selects a the specified row in the specified JTable and scrolls
     * the specified JScrollpane to the newly selected row. More importantly,
     * the call to repaint() delayed long enough to have the table
     * properly paint the newly selected row which may be offscre
     * @param table should belong to the specified JScrollPane
     */
    public static void selectRow(int row, JTable table, JScrollPane pane) {
        if (table == null || pane == null) {
            return;
        }
        if (contains(row, table.getModel()) == false) {
            return;
        }
        moveAdjustable(row * table.getRowHeight(),
                pane.getVerticalScrollBar());
        selectRow(row, table.getSelectionModel());
        // repaint must be done later because moveAdjustable
        // posts requests to the swing thread which must execute before
        // the repaint logic gets executed.
        repaintLater(table);
    }

    protected static void selectRow(int row, ListSelectionModel model) {
        if (model == null) {
            return;
        }
        model.setSelectionInterval(row, row);
    }

    protected static boolean contains(int row, TableModel model) {
        if (model == null) {
            return false;
        }
        if (row < 0) {
            return false;
        }
        if (row >= model.getRowCount()) {
            return false;
        }
        return true;
    }

    protected static void moveAdjustable(int location, Adjustable scrollBar) {
        if (scrollBar == null) {
            return;
        }
        scrollBar.setValue(location);
    }

    /**
     * Work around for JTable/viewport bug.
     * @link http://developer.java.sun.com/developer/bugParade/bugs/4205145.html
     */
    protected static void repaintLater(final JComponent component) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                component.repaint();
            }
        });
    }
}

Related

  1. removeListSelectionListeners(final JList comp)
  2. removeSelectedListItems(JList sourceList)
  3. removeSelectionFromList(JList fileList)
  4. removeTypeSelectionListener(JList list)
  5. selectByTyping(javax.swing.JList list, javax.swing.JTextField textfield)
  6. selectStringInList(String string, JList list)
  7. setJListSelection(List selection, JList list)
  8. setLeadAnchorWithoutSelection(ListSelectionModel model, int lead, int anchor)
  9. setSelectedItems(JList list, List selected)