Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/*
 * Copyright 1999-2005 The Apache Software Foundation.
 * 
 * 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 javax.swing.table.TableModel;
import java.awt.*;

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();
            }
        });
    }
}