类javax.swing.table.JTableHeader源码实例Demo

下面列出了怎么用javax.swing.table.JTableHeader的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: netbeans   文件: TableSorter.java
@Override
public void mouseClicked(MouseEvent e) {
    JTableHeader h = (JTableHeader) e.getSource();
    TableColumnModel columnModel = h.getColumnModel();
    int viewColumn = columnModel.getColumnIndexAtX(e.getX());
    int column = columnModel.getColumn(viewColumn).getModelIndex();
    if (column != -1) {
        int status = getSortingStatus(column);
        if (!e.isControlDown()) {
            cancelSorting();
        }
        // Cycle the sorting states through {NOT_SORTED, ASCENDING, DESCENDING} or 
        // {NOT_SORTED, DESCENDING, ASCENDING} depending on whether shift is pressed. 
        status += e.isShiftDown() ? -1 : 1;
        status = (status + 4) % 3 - 1; // signed mod, returning {-1, 0, 1}
        setSortingStatus(column, status);
        if(issueTable != null) {
            issueTable.sortOrderChanged();
        }
    }
}
 
源代码2 项目: knopflerfish.org   文件: TableSorter.java
public void addMouseListenerToHeaderInTable(JTable table) {
    final TableSorter sorter = this;
    final JTable tableView = table;
    tableView.setColumnSelectionAllowed(false);
    final MouseAdapter listMouseListener = new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            final TableColumnModel columnModel = tableView.getColumnModel();
            final int viewColumn = columnModel.getColumnIndexAtX(e.getX());
            final int column = tableView.convertColumnIndexToModel(viewColumn);
            if (e.getClickCount() == 1 && column != -1) {
                //System.out.println("Sorting ...");
                final int shiftPressed = e.getModifiers()&InputEvent.SHIFT_MASK;
                final boolean ascending = (shiftPressed == 0);
                sorter.sortByColumn(column, ascending);
            }
        }
    };
    final JTableHeader th = tableView.getTableHeader();
    th.addMouseListener(listMouseListener);
}
 
源代码3 项目: beast-mcmc   文件: TaxonSetPanel.java
protected void initTaxonSetsTable(AbstractTableModel tableModel, final String[] columnToolTips) {
    taxonSetsTable = new JTable(tableModel) {
        //Implement table header tool tips.
        protected JTableHeader createDefaultTableHeader() {
            return new JTableHeader(columnModel) {
                public String getToolTipText(MouseEvent e) {
                    Point p = e.getPoint();
                    int index = columnModel.getColumnIndexAtX(p.x);
                    int realIndex = columnModel.getColumn(index).getModelIndex();
                    return columnToolTips[realIndex];
                }
            };
        }
    };
    taxonSetsTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

    taxonSetsTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
        public void valueChanged(ListSelectionEvent evt) {
            taxonSetsTableSelectionChanged();
        }
    });
    taxonSetsTable.doLayout();
}
 
源代码4 项目: jdk8u-jdk   文件: TableSorter.java
public void addMouseListenerToHeaderInTable(JTable table) {
    final TableSorter sorter = this;
    final JTable tableView = table;
    tableView.setColumnSelectionAllowed(false);
    MouseAdapter listMouseListener = new MouseAdapter() {

        @Override
        public void mouseClicked(MouseEvent e) {
            TableColumnModel columnModel = tableView.getColumnModel();
            int viewColumn = columnModel.getColumnIndexAtX(e.getX());
            int column = tableView.convertColumnIndexToModel(viewColumn);
            if (e.getClickCount() == 1 && column != -1) {
                System.out.println("Sorting ...");
                int shiftPressed = e.getModifiers() & InputEvent.SHIFT_MASK;
                boolean ascending = (shiftPressed == 0);
                sorter.sortByColumn(column, ascending);
            }
        }
    };
    JTableHeader th = tableView.getTableHeader();
    th.addMouseListener(listMouseListener);
}
 
源代码5 项目: ghidra   文件: MemoryMapProvider1Test.java
@Test
public void testSortNames() {
	JTableHeader header = table.getTableHeader();
	Rectangle rect = header.getHeaderRect(MemoryMapModel.NAME);
	clickMouse(header, 1, rect.x, rect.y, 1, 0);

	MemoryBlock[] blocks = memory.getBlocks();
	String[] names = new String[blocks.length];
	for (int i = 0; i < names.length; i++) {
		names[i] = blocks[i].getName();
	}
	// sort ascending
	Arrays.sort(names);
	for (int i = names.length - 1; i >= 0; i--) {
		assertEquals(names[i], model.getValueAt(i, MemoryMapModel.NAME));
	}
}
 
源代码6 项目: rapidminer-studio   文件: DataViewerTable.java
/**
 * This method ensures that the correct tool tip for the current column is delivered.
 */
@Override
protected JTableHeader createDefaultTableHeader() {
	JTableHeader header = new JTableHeader(columnModel) {

		private static final long serialVersionUID = 1L;

		@Override
		public String getToolTipText(MouseEvent e) {
			java.awt.Point p = e.getPoint();
			int index = columnModel.getColumnIndexAtX(p.x);
			int realColumnIndex = convertColumnIndexToModel(index);
			return DataViewerTable.this.getHeaderToolTipText(realColumnIndex);
		}
	};
	header.putClientProperty(RapidLookTools.PROPERTY_TABLE_HEADER_BACKGROUND, Colors.WHITE);
	return header;
}
 
源代码7 项目: ghidra   文件: MemoryMapProvider1Test.java
@Test
public void testSortBlockType() throws Exception {

	// add a bit overlay block, live block, and an unitialized block
	int transactionID = program.startTransaction("test");
	memory.createBitMappedBlock(".Bit", getAddr(0), getAddr(0x01001000), 0x100, false);
	memory.createUninitializedBlock(".Uninit", getAddr(0x3000), 0x200, false);
	program.endTransaction(transactionID, true);

	JTableHeader header = table.getTableHeader();
	// ascending
	Rectangle rect = header.getHeaderRect(MemoryMapModel.BLOCK_TYPE);
	clickMouse(header, 1, rect.x, rect.y, 1, 0);
	MemoryBlock[] blocks = memory.getBlocks();

	String[] typeNames = new String[blocks.length];
	for (int i = 0; i < typeNames.length; i++) {
		typeNames[i] = blocks[i].getType().toString();
	}
	Arrays.sort(typeNames);

	for (int i = 0; i < typeNames.length; i++) {
		assertEquals(typeNames[i], model.getValueAt(i, MemoryMapModel.BLOCK_TYPE));
	}

}
 
源代码8 项目: java-swing-tips   文件: MainPanel.java
@Override public void mouseClicked(MouseEvent e) {
  JTableHeader header = (JTableHeader) e.getComponent();
  JTable tbl = header.getTable();
  TableColumnModel columnModel = tbl.getColumnModel();
  TableModel m = tbl.getModel();
  int vci = columnModel.getColumnIndexAtX(e.getX());
  int mci = tbl.convertColumnIndexToModel(vci);
  if (mci == targetColumnIndex && m.getRowCount() > 0) {
    TableColumn column = columnModel.getColumn(vci);
    boolean b = column.getHeaderValue() == Status.DESELECTED;
    for (int i = 0; i < m.getRowCount(); i++) {
      m.setValueAt(b, i, mci);
    }
    column.setHeaderValue(b ? Status.SELECTED : Status.DESELECTED);
    // header.repaint();
  }
}
 
源代码9 项目: TencentKona-8   文件: TableSorter.java
public void addMouseListenerToHeaderInTable(JTable table) {
    final TableSorter sorter = this;
    final JTable tableView = table;
    tableView.setColumnSelectionAllowed(false);
    MouseAdapter listMouseListener = new MouseAdapter() {

        @Override
        public void mouseClicked(MouseEvent e) {
            TableColumnModel columnModel = tableView.getColumnModel();
            int viewColumn = columnModel.getColumnIndexAtX(e.getX());
            int column = tableView.convertColumnIndexToModel(viewColumn);
            if (e.getClickCount() == 1 && column != -1) {
                System.out.println("Sorting ...");
                int shiftPressed = e.getModifiers() & InputEvent.SHIFT_MASK;
                boolean ascending = (shiftPressed == 0);
                sorter.sortByColumn(column, ascending);
            }
        }
    };
    JTableHeader th = tableView.getTableHeader();
    th.addMouseListener(listMouseListener);
}
 
/**
 * Handle a mouse press event - if the user is NOT resizing a column and NOT dragging a column
 * then give visual feedback that the column header has been pressed.
 *
 * @param e  the mouse event.
 */
public void mousePressed(final MouseEvent e) {

    final JTableHeader header = (JTableHeader) e.getComponent();

    if (header.getResizingColumn() == null) {  // resizing takes precedence over sorting
        if (header.getDraggedDistance() < 1) {   // dragging also takes precedence over sorting
            final int columnIndex = header.columnAtPoint(e.getPoint());
            final int modelColumnIndex 
                = header.getTable().convertColumnIndexToModel(columnIndex);
            if (this.model.isSortable(modelColumnIndex)) {
                this.sortColumnIndex = header.getTable().convertColumnIndexToModel(columnIndex);
                this.renderer.setPressedColumn(this.sortColumnIndex);
                header.repaint();
                if (header.getTable().isEditing()) {
                    header.getTable().getCellEditor().stopCellEditing();
                }
            }
            else {
                this.sortColumnIndex = -1;
            }
        }
    }

}
 
源代码11 项目: pcgen   文件: SkillPointTableModel.java
public static void initializeTable(JTable table)
{
	table.setAutoCreateColumnsFromModel(false);
	JTableHeader header = table.getTableHeader();
	TableColumnModel columns = new DefaultTableColumnModel();
	TableCellRenderer headerRenderer = header.getDefaultRenderer();
	columns.addColumn(Utilities.createTableColumn(0, "in_level", headerRenderer, false));
	columns.addColumn(Utilities.createTableColumn(1, "in_class", headerRenderer, true));
	TableColumn remainCol = Utilities.createTableColumn(2, "in_iskRemain", headerRenderer, false);
	remainCol.setCellRenderer(new BoldNumberRenderer());
	columns.addColumn(remainCol);
	columns.addColumn(Utilities.createTableColumn(3, "in_gained", headerRenderer, false));
	table.setDefaultRenderer(Integer.class, new TableCellUtilities.AlignRenderer(SwingConstants.CENTER));
	table.setColumnModel(columns);
	table.setFocusable(false);
	header.setReorderingAllowed(false);
	header.setResizingAllowed(false);
}
 
源代码12 项目: netbeans   文件: TimelineHeaderRenderer.java
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
    boolean timelineColumn = column == table.convertColumnIndexToModel(col);
    setVisible(timelineColumn);
    
    Component c = impl.getTableCellRendererComponent(table, timelineColumn ?
                  " " : value, isSelected, hasFocus, row, col); // NOI18N
    if (timelineColumn) {
        if (getParent() == null && c instanceof Container) ((Container)c).add(this);

        JTableHeader header = table.getTableHeader();
        if (painter == null) initStaticUI(c, header);
        
        TableColumn _column = header.getColumnModel().getColumn(col);
        
        setSize(_column.getWidth(), header.getSize().height);
    }
    
    return c;
}
 
源代码13 项目: java-swing-tips   文件: TableSorter.java
@Override public void mouseClicked(MouseEvent e) {
  JTableHeader h = (JTableHeader) e.getComponent();
  TableColumnModel columnModel = h.getColumnModel();
  int viewColumn = columnModel.getColumnIndexAtX(e.getX());
  // ArrayIndexOutOfBoundsException: -1
  if (viewColumn < 0) {
    return;
  }
  int column = columnModel.getColumn(viewColumn).getModelIndex();
  if (column != -1) {
    int status = getSortingStatus(column) + (e.isShiftDown() ? -1 : 1);
    if (!e.isControlDown()) {
      cancelSorting();
    }
    // Cycle the sorting states through {NOT_SORTED, ASCENDING, DESCENDING} or
    // {NOT_SORTED, DESCENDING, ASCENDING} depending on whether shift is pressed.
    // int d = e.isShiftDown() ? -1 : 1;
    // status = status + d;
    status = (status + 4) % 3 - 1; // signed mod, returning {-1, 0, 1}
    setSortingStatus(column, status);
  }
}
 
源代码14 项目: jplag   文件: TableSorter.java
public void mouseClicked(MouseEvent e) {
    JTableHeader h = (JTableHeader) e.getSource();
    TableColumnModel columnModel = h.getColumnModel();
    int viewColumn = columnModel.getColumnIndexAtX(e.getX());
    int column = columnModel.getColumn(viewColumn).getModelIndex();
    if (column != -1) {
        int status = getSortingStatus(column);
        if (!e.isControlDown()) {
            cancelSorting();
        }
        // Cycle the sorting states through {NOT_SORTED, ASCENDING, DESCENDING} or 
        // {NOT_SORTED, DESCENDING, ASCENDING} depending on whether shift is pressed. 
        status = status + (e.isShiftDown() ? -1 : 1);
        status = (status + 4) % 3 - 1; // signed mod, returning {-1, 0, 1}
        setSortingStatus(column, status);
    }
}
 
源代码15 项目: SimpleERP   文件: QueryDailyIncome.java
public static void FitTableColumns(JTable myTable){
	  JTableHeader header = myTable.getTableHeader();
	     int rowCount = myTable.getRowCount();
	     Enumeration columns = myTable.getColumnModel().getColumns();
	     while(columns.hasMoreElements()){
	         TableColumn column = (TableColumn)columns.nextElement();
	         int col = header.getColumnModel().getColumnIndex(column.getIdentifier());
	         int width = (int)myTable.getTableHeader().getDefaultRenderer()
	                 .getTableCellRendererComponent(myTable, column.getIdentifier()
	                         , false, false, -1, col).getPreferredSize().getWidth();
	         for(int row = 0; row<rowCount; row++){
	             int preferedWidth = (int)myTable.getCellRenderer(row, col).getTableCellRendererComponent(myTable,
	               myTable.getValueAt(row, col), false, false, row, col).getPreferredSize().getWidth();
	             width = Math.max(width, preferedWidth);
	         }
	         header.setResizingColumn(column); // ���к���Ҫ
	         column.setWidth(width+myTable.getIntercellSpacing().width);
	     }
}
 
源代码16 项目: hottub   文件: TableSorter.java
public void addMouseListenerToHeaderInTable(JTable table) {
    final TableSorter sorter = this;
    final JTable tableView = table;
    tableView.setColumnSelectionAllowed(false);
    MouseAdapter listMouseListener = new MouseAdapter() {

        @Override
        public void mouseClicked(MouseEvent e) {
            TableColumnModel columnModel = tableView.getColumnModel();
            int viewColumn = columnModel.getColumnIndexAtX(e.getX());
            int column = tableView.convertColumnIndexToModel(viewColumn);
            if (e.getClickCount() == 1 && column != -1) {
                System.out.println("Sorting ...");
                int shiftPressed = e.getModifiers() & InputEvent.SHIFT_MASK;
                boolean ascending = (shiftPressed == 0);
                sorter.sortByColumn(column, ascending);
            }
        }
    };
    JTableHeader th = tableView.getTableHeader();
    th.addMouseListener(listMouseListener);
}
 
源代码17 项目: openjdk-jdk8u   文件: TableSorter.java
public void addMouseListenerToHeaderInTable(JTable table) {
    final TableSorter sorter = this;
    final JTable tableView = table;
    tableView.setColumnSelectionAllowed(false);
    MouseAdapter listMouseListener = new MouseAdapter() {

        @Override
        public void mouseClicked(MouseEvent e) {
            TableColumnModel columnModel = tableView.getColumnModel();
            int viewColumn = columnModel.getColumnIndexAtX(e.getX());
            int column = tableView.convertColumnIndexToModel(viewColumn);
            if (e.getClickCount() == 1 && column != -1) {
                System.out.println("Sorting ...");
                int shiftPressed = e.getModifiers() & InputEvent.SHIFT_MASK;
                boolean ascending = (shiftPressed == 0);
                sorter.sortByColumn(column, ascending);
            }
        }
    };
    JTableHeader th = tableView.getTableHeader();
    th.addMouseListener(listMouseListener);
}
 
源代码18 项目: java-swing-tips   文件: MainPanel.java
@Override public void show(Component c, int x, int y) {
  if (c instanceof JTableHeader) {
    JTableHeader header = (JTableHeader) c;
    header.setDraggedColumn(null); // bookmark_1
    // if (header.getDraggedColumn() != null) remain dirty area >>>
    header.repaint();
    header.getTable().repaint();
    // <<<
    index = header.columnAtPoint(new Point(x, y));
    super.show(c, x, y);
  }
}
 
源代码19 项目: openjdk-jdk9   文件: JTableHeaderOperator.java
/**
 * Maps {@code JTableHeader.getDraggedColumn()} through queue
 */
public TableColumn getDraggedColumn() {
    return (runMapping(new MapAction<TableColumn>("getDraggedColumn") {
        @Override
        public TableColumn map() {
            return ((JTableHeader) getSource()).getDraggedColumn();
        }
    }));
}
 
源代码20 项目: java-swing-tips   文件: MainPanel.java
public Dimension getSize(JTableHeader header) {
  TableCellRenderer r = header.getDefaultRenderer();
  Component c = r.getTableCellRendererComponent(header.getTable(), getHeaderValue(), false, false, -1, -1);
  int width = 0;
  for (Object obj: list) {
    if (obj instanceof TableColumn) {
      TableColumn tc = (TableColumn) obj;
      width += tc.getWidth();
    } else {
      width += ((ColumnGroup) obj).getSize(header).width;
    }
  }
  return new Dimension(width, c.getPreferredSize().height);
}
 
源代码21 项目: netbeans   文件: OptionsAction.java
public void mouseClicked (MouseEvent evt) {
    Component c = evt.getComponent ();
    if (c instanceof JTableHeader) {
        JTableHeader h = (JTableHeader)c;
        
        // show/hide additional properties
        if (1 == h.columnAtPoint (evt.getPoint ())) {
            refreshColumns (true);
        }
    }
}
 
源代码22 项目: java-swing-tips   文件: MainPanel.java
private MainPanel() {
  super(new BorderLayout());

  String[] columnNames = {"Default", "GlyphVector", "JTextArea"};
  Object[][] data = {
    {STR0, STR1, STR2}, {STR0, STR1, STR2},
    {STR3, STR3, STR3}, {STR3, STR3, STR3}
  };
  TableModel model = new DefaultTableModel(data, columnNames) {
    @Override public Class<?> getColumnClass(int column) {
      return getValueAt(0, column).getClass();
    }
  };
  JTable table = new JTable(model) {
    @Override public void updateUI() {
      getColumnModel().getColumn(1).setCellRenderer(null);
      getColumnModel().getColumn(2).setCellRenderer(null);
      super.updateUI();
      setRowSelectionAllowed(true);
      setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
      setRowHeight(50);
      getColumnModel().getColumn(1).setCellRenderer(new TestRenderer());
      getColumnModel().getColumn(2).setCellRenderer(new TextAreaCellRenderer());
    }
  };

  JTableHeader tableHeader = table.getTableHeader();
  tableHeader.setReorderingAllowed(false);

  add(new JScrollPane(table));
  setPreferredSize(new Dimension(320, 240));
}
 
源代码23 项目: openjdk-jdk9   文件: JTableHeaderOperator.java
/**
 * Maps {@code JTableHeader.setUI(TableHeaderUI)} through queue
 */
public void setUI(final TableHeaderUI tableHeaderUI) {
    runMapping(new MapVoidAction("setUI") {
        @Override
        public void map() {
            ((JTableHeader) getSource()).setUI(tableHeaderUI);
        }
    });
}
 
源代码24 项目: java-swing-tips   文件: MainPanel.java
@Override public void show(Component c, int x, int y) {
  if (c instanceof JTableHeader) {
    JTableHeader header = (JTableHeader) c;
    JTable table = header.getTable();
    header.setDraggedColumn(null);
    header.repaint();
    table.repaint();
    int i = table.convertColumnIndexToModel(header.columnAtPoint(new Point(x, y)));
    if (i >= 0) {
      actions.forEach(a -> a.setIndex(i));
      super.show(c, x, y);
    }
  }
}
 
源代码25 项目: openjdk-jdk9   文件: JTableHeaderOperator.java
/**
 * Maps {@code JTableHeader.columnMarginChanged(ChangeEvent)} through queue
 */
public void columnMarginChanged(final ChangeEvent changeEvent) {
    runMapping(new MapVoidAction("columnMarginChanged") {
        @Override
        public void map() {
            ((JTableHeader) getSource()).columnMarginChanged(changeEvent);
        }
    });
}
 
源代码26 项目: openjdk-8-source   文件: bug6889007.java
public static void main(String[] args) throws Exception {
    SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit();
    Robot robot = new Robot();
    robot.setAutoDelay(20);

    final JFrame frame = new JFrame();
    frame.setUndecorated(true);

    SwingUtilities.invokeAndWait(new Runnable() {
        public void run() {
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            JTableHeader th = new JTableHeader();
            th.setColumnModel(new JTable(20, 5).getColumnModel());

            th.setUI(new MyTableHeaderUI());

            frame.add(th);
            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
        }
    });
    toolkit.realSync();
    Point point = frame.getLocationOnScreen();
    int shift = 10;
    int x = point.x;
    int y = point.y + frame.getHeight()/2;
    for(int i = -shift; i < frame.getWidth() + 2*shift; i++) {
        robot.mouseMove(x++, y);
    }
    toolkit.realSync();
    // 9 is a magic test number
    if (MyTableHeaderUI.getTestValue() != 9) {
        throw new RuntimeException("Unexpected test number "
                + MyTableHeaderUI.getTestValue());
    }
    System.out.println("ok");
}
 
源代码27 项目: snap-desktop   文件: TableViewPagePanel.java
void setModel(TableModel tableModel) {
    table.setModel(tableModel);
    if (table.getColumnCount() > 0) {
        final JTableHeader tableHeader = table.getTableHeader();
        final int margin = tableHeader.getColumnModel().getColumnMargin();
        final TableCellRenderer renderer = tableHeader.getDefaultRenderer();
        final Enumeration<TableColumn> columns = table.getColumnModel().getColumns();
        while (columns.hasMoreElements()) {
            TableColumn tableColumn = columns.nextElement();
            final int width = getColumnMinWith(tableColumn, renderer, margin);
            tableColumn.setMinWidth(width);
        }
    }
}
 
源代码28 项目: netbeans   文件: DataViewBuilders.java
static ComponentBuilder getBuilder(Instance instance, Heap heap) {
    if (DetailsUtils.isSubclassOf(instance, JComboBox.class.getName())) {
        return new JComboBoxBuilder(instance, heap);
    } else if (DetailsUtils.isSubclassOf(instance, JList.class.getName())) {
        return new JListBuilder(instance, heap);
    } else if (DetailsUtils.isSubclassOf(instance, JTree.class.getName())) {
        return new JTreeBuilder(instance, heap);
    } else if (DetailsUtils.isSubclassOf(instance, JTable.class.getName())) {
        return new JTableBuilder(instance, heap);
    } else if (DetailsUtils.isSubclassOf(instance, JTableHeader.class.getName())) {
        return new JTableHeaderBuilder(instance, heap);
    }
    return null;
}
 
源代码29 项目: java-swing-tips   文件: MainPanel.java
@Override public void tableChanged(TableModelEvent e) {
  if (e.getType() == TableModelEvent.UPDATE && e.getColumn() == targetColumnIndex) {
    int vci = table.convertColumnIndexToView(targetColumnIndex);
    TableColumn column = table.getColumnModel().getColumn(vci);
    Object status = column.getHeaderValue();
    TableModel m = table.getModel();
    if (m instanceof DefaultTableModel && fireUpdateEvent((DefaultTableModel) m, column, status)) {
      JTableHeader h = table.getTableHeader();
      h.repaint(h.getHeaderRect(vci));
    }
  }
}
 
源代码30 项目: jdk8u-jdk   文件: bug6889007.java
public static void main(String[] args) throws Exception {
    SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit();
    Robot robot = new Robot();
    robot.setAutoDelay(20);

    final JFrame frame = new JFrame();
    frame.setUndecorated(true);

    SwingUtilities.invokeAndWait(new Runnable() {
        public void run() {
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            JTableHeader th = new JTableHeader();
            th.setColumnModel(new JTable(20, 5).getColumnModel());

            th.setUI(new MyTableHeaderUI());

            frame.add(th);
            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
        }
    });
    toolkit.realSync();
    Point point = frame.getLocationOnScreen();
    int shift = 10;
    int x = point.x;
    int y = point.y + frame.getHeight()/2;
    for(int i = -shift; i < frame.getWidth() + 2*shift; i++) {
        robot.mouseMove(x++, y);
    }
    toolkit.realSync();
    // 9 is a magic test number
    if (MyTableHeaderUI.getTestValue() != 9) {
        throw new RuntimeException("Unexpected test number "
                + MyTableHeaderUI.getTestValue());
    }
    System.out.println("ok");
}
 
 类所在包
 同包方法