下面列出了javax.swing.table.JTableHeader#getTable ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* Returns the grid color for the table header.
*
* @param header
* Table header.
* @return Grid color.
*/
protected static Color getGridColor(JTableHeader header) {
boolean isEnabled = header.isEnabled();
if (header.getTable() != null) {
// fix for issue 472 - handle standalone table headers
isEnabled = isEnabled && header.getTable().isEnabled();
}
ComponentState currState = isEnabled ? ComponentState.ENABLED
: ComponentState.DISABLED_UNSELECTED;
Color gridColor = SubstanceCoreUtilities.getSkin(header).getOverlayColor(
SubstanceSlices.ColorOverlayType.LINE,
DecorationPainterUtils.getDecorationType(header), currState);
if (gridColor == null) {
gridColor = SubstanceColorSchemeUtilities.getColorScheme(
header, ColorSchemeAssociationKind.BORDER, currState).getLineColor();
}
return gridColor;
}
@Override
public void mouseClicked(MouseEvent e) {
JTableHeader header = (JTableHeader) e.getSource();
JTable table = header.getTable();
TableColumnModel columnModel = table.getColumnModel();
int vci = columnModel.getColumnIndexAtX(e.getX());
int mci = table.convertColumnIndexToModel(vci);
if (mci == targetColumnIndex) {
if (SwingUtilities.isLeftMouseButton(e)) {
TableColumn column = columnModel.getColumn(vci);
Object v = column.getHeaderValue();
boolean b = Status.DESELECTED.equals(v);
TableModel m = table.getModel();
for (int i = 0; i < m.getRowCount(); i++) {
m.setValueAt(b, i, mci);
}
column.setHeaderValue(b ? Status.SELECTED : Status.DESELECTED);
} else if (SwingUtilities.isRightMouseButton(e)) {
if (popupMenu != null) {
popupMenu.show(table, e.getX(), 0);
}
}
}
}
@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();
}
}
@Override public void mousePressed(MouseEvent e) {
JTableHeader h = (JTableHeader) e.getComponent();
TableColumnModel columnModel = h.getColumnModel();
int viewColumn = columnModel.getColumnIndexAtX(e.getX());
if (viewColumn < 0) {
return;
}
TableCellRenderer tcr = h.getDefaultRenderer();
int column = columnModel.getColumn(viewColumn).getModelIndex();
if (column != -1 && tcr instanceof SortButtonRenderer) {
SortButtonRenderer sbr = (SortButtonRenderer) tcr;
sbr.setPressedColumn(column);
sbr.setSelectedColumn(column);
h.repaint();
JTable table = h.getTable();
if (table.isEditing()) {
table.getCellEditor().stopCellEditing();
}
SortableTableModel model = (SortableTableModel) table.getModel();
model.sortByColumn(column, SortButtonRenderer.DOWN == sbr.getState(column));
}
}
@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();
}
}
@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();
}
}
@Override public void mousePressed(MouseEvent e) {
JTableHeader h = (JTableHeader) e.getComponent();
TableColumnModel columnModel = h.getColumnModel();
int viewColumn = columnModel.getColumnIndexAtX(e.getX());
if (viewColumn < 0) {
return;
}
TableCellRenderer tcr = h.getDefaultRenderer();
int column = columnModel.getColumn(viewColumn).getModelIndex();
if (column != -1 && tcr instanceof SortButtonRenderer) {
SortButtonRenderer sbr = (SortButtonRenderer) tcr;
sbr.setPressedColumn(column);
sbr.setSelectedColumn(column);
h.repaint();
JTable table = h.getTable();
if (table.isEditing()) {
table.getCellEditor().stopCellEditing();
}
SortableTableModel model = (SortableTableModel) table.getModel();
model.sortByColumn(column, SortButtonRenderer.DOWN == sbr.getState(column));
}
}
@Override public void mousePressed(MouseEvent e) {
JTableHeader h = (JTableHeader) e.getComponent();
TableColumnModel columnModel = h.getColumnModel();
int viewColumn = columnModel.getColumnIndexAtX(e.getX());
if (viewColumn < 0) {
return;
}
TableCellRenderer tcr = h.getDefaultRenderer();
int column = columnModel.getColumn(viewColumn).getModelIndex();
if (column != -1 && tcr instanceof SortButtonRenderer) {
SortButtonRenderer sbr = (SortButtonRenderer) tcr;
if (!sbr.isEnabledAt(column)) {
return;
}
sbr.setPressedColumn(column);
sbr.setSelectedColumn(column);
h.repaint();
JTable table = h.getTable();
if (table.isEditing()) {
table.getCellEditor().stopCellEditing();
}
SortableTableModel model = (SortableTableModel) table.getModel();
model.sortByColumn(column, SortButtonRenderer.DOWN == sbr.getState(column));
}
}
@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();
}
}
public void mouseMoved(MouseEvent evt) {
TableColumn col = null;
JTableHeader header = (JTableHeader)evt.getSource();
JTable table = header.getTable();
TableColumnModel colModel = table.getColumnModel();
int vColIndex = colModel.getColumnIndexAtX(evt.getX());
// Return if not clicked on any column header
if (vColIndex >= 0) {
col = colModel.getColumn(vColIndex);
}
if (col != curCol) {
header.setToolTipText((String)tips.get(col));
curCol = col;
}
}
@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);
}
}
}
@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) {
JTable t = h.getTable();
int keyCol = 0;
// List<?> list = saveSelectedRow(t, keyCol);
List<Object> list = new ArrayList<>();
int[] ilist = t.getSelectedRows();
for (int i = ilist.length - 1; i >= 0; i--) {
list.add(tableModel.getValueAt(modelIndex(ilist[i]), keyCol));
}
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);
loadSelectedRow(t, list, keyCol);
}
}
@Override
public void mouseClicked(MouseEvent e) {
JTableHeader h = (JTableHeader) e.getSource();
JTable table = h.getTable();
int selectedRow = table.getSelectedRow();
TableModel model = table.getModel();
//remember selection to keep after sorting
Object selectedAction=null;
int objectColumn=-1;
if(selectedRow>-1) {
for(int i=0; i<table.getColumnCount(); i++) {
//first find colum with appropriate object
if(model.getValueAt(selectedRow, i) instanceof ActionHolder) {
//remember this object
selectedAction=model.getValueAt(selectedRow, i);
objectColumn=i;
//stop edition as we click somewhere ouside of editor
TableCellEditor editor=table.getCellEditor();
if(editor!=null) {
editor.stopCellEditing();
}
break;
}
}
}
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);
//reselect the same object
if(selectedAction!=null)setSelectedRow(table, selectedAction, objectColumn);
}
}
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
JTableHeader header = (JTableHeader) e.getSource();
TableColumn tableColumn = getResizingColumn(header, e.getPoint());
if (tableColumn == null) {
return;
}
JTable table = header.getTable();
if ((e.getModifiers() & InputEvent.CTRL_MASK) == InputEvent.CTRL_MASK) {
if (table instanceof ExtendedJTable) {
((ExtendedJTable) table).pack();
e.consume();
}
} else {
int col = header.getColumnModel().getColumnIndex(tableColumn.getIdentifier());
int width = (int) header.getDefaultRenderer()
.getTableCellRendererComponent(table, tableColumn.getIdentifier(), false, false, -1, col)
.getPreferredSize().getWidth();
int firstRow = 0;
int lastRow = table.getRowCount();
if (table instanceof ExtendedJTable) {
ExtendedJScrollPane scrollPane = ((ExtendedJTable) table).getExtendedScrollPane();
if (scrollPane != null) {
JViewport viewport = scrollPane.getViewport();
Rectangle viewRect = viewport.getViewRect();
if (viewport.getHeight() < table.getHeight()) {
firstRow = table.rowAtPoint(new Point(0, viewRect.y));
firstRow = Math.max(0, firstRow);
lastRow = table.rowAtPoint(new Point(0, viewRect.y + viewRect.height - 1));
lastRow = Math.min(lastRow, table.getRowCount());
}
}
}
for (int row = firstRow; row < lastRow; row++) {
int preferedWidth = (int) table.getCellRenderer(row, col)
.getTableCellRendererComponent(table, table.getValueAt(row, col), false, false, row, col)
.getPreferredSize().getWidth();
width = Math.max(width, preferedWidth);
}
header.setResizingColumn(tableColumn); // this line is very important
tableColumn.setWidth(width + table.getIntercellSpacing().width);
e.consume();
}
}
}