⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lf5swingutils.java

📁 实现在电脑平台上控制短信modem或手机进行通讯的jar包和相关实例
💻 JAVA
字号:
/* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software * License version 1.1, a copy of which has been included with this * distribution in the LICENSE.txt file. */package org.apache.log4j.lf5.viewer;import javax.swing.*;import javax.swing.table.TableModel;import java.awt.*;/** * Provides methods to accomplish common yet non-trivial tasks * with Swing. Obvious implementations of these methods have been * tried and failed. * * @author Richard Wan */// Contributed by ThoughtWorks Inc.public class LF5SwingUtils {  //--------------------------------------------------------------------------  //   Constants:  //--------------------------------------------------------------------------  //--------------------------------------------------------------------------  //   Protected Variables:  //--------------------------------------------------------------------------  //--------------------------------------------------------------------------  //   Private Variables:  //--------------------------------------------------------------------------  //--------------------------------------------------------------------------  //   Constructors:  //--------------------------------------------------------------------------  //--------------------------------------------------------------------------  //   Public Methods:  //--------------------------------------------------------------------------  /**   * 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);  }  /**   * Makes the specified Adjustable track if the view area expands and   * the specified Adjustable is located near the of the view.   */  public static void makeScrollBarTrack(Adjustable scrollBar) {    if (scrollBar == null) {      return;    }    scrollBar.addAdjustmentListener(new TrackingAdjustmentListener());  }  /**   * Makes the vertical scroll bar of the specified JScrollPane   * track if the view expands (e.g. if rows are added to an underlying   * table).   */  public static void makeVerticalScrollBarTrack(JScrollPane pane) {    if (pane == null) {      return;    }    makeScrollBarTrack(pane.getVerticalScrollBar());  }  //--------------------------------------------------------------------------  //   Protected Methods:  //--------------------------------------------------------------------------  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 selectRow(int row, ListSelectionModel model) {    if (model == null) {      return;    }    model.setSelectionInterval(row, row);  }  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();      }    });  }  //--------------------------------------------------------------------------  //   Private Methods:  //--------------------------------------------------------------------------  //--------------------------------------------------------------------------  //   Nested Top-Level Classes or Interfaces  //--------------------------------------------------------------------------}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -