FileDocCategorySizeDatePackage
LF5SwingUtils.javaAPI DocApache log4j 1.2.155095Sat Aug 25 00:09:38 BST 2007org.apache.log4j.lf5.viewer

LF5SwingUtils

public class LF5SwingUtils extends Object
Provides methods to accomplish common yet non-trivial tasks with Swing. Obvious implementations of these methods have been tried and failed.
author
Richard Wan

Fields Summary
Constructors Summary
Methods Summary
protected static booleancontains(int row, javax.swing.table.TableModel model)

    if (model == null) {
      return false;
    }
    if (row < 0) {
      return false;
    }
    if (row >= model.getRowCount()) {
      return false;
    }
    return true;
  
public static voidmakeScrollBarTrack(java.awt.Adjustable scrollBar)
Makes the specified Adjustable track if the view area expands and the specified Adjustable is located near the of the view.

    if (scrollBar == null) {
      return;
    }
    scrollBar.addAdjustmentListener(new TrackingAdjustmentListener());
  
public static voidmakeVerticalScrollBarTrack(javax.swing.JScrollPane pane)
Makes the vertical scroll bar of the specified JScrollPane track if the view expands (e.g. if rows are added to an underlying table).

    if (pane == null) {
      return;
    }
    makeScrollBarTrack(pane.getVerticalScrollBar());
  
protected static voidmoveAdjustable(int location, java.awt.Adjustable scrollBar)

    if (scrollBar == null) {
      return;
    }
    scrollBar.setValue(location);
  
protected static voidrepaintLater(javax.swing.JComponent component)
Work around for JTable/viewport bug.

link
http://developer.java.sun.com/developer/bugParade/bugs/4205145.html

    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        component.repaint();
      }
    });
  
public static voidselectRow(int row, javax.swing.JTable table, javax.swing.JScrollPane pane)
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

    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 voidselectRow(int row, javax.swing.ListSelectionModel model)

    if (model == null) {
      return;
    }
    model.setSelectionInterval(row, row);