下面列出了javax.swing.table.JTableHeader#setDraggedColumn ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private static JTable makeJTable() {
JTable table = new JTable(4, 3);
table.setAutoCreateRowSorter(true);
JPopupMenu popup = new JPopupMenu() {
@Override public void show(Component c, int x, int y) {
if (c instanceof JTableHeader) {
JTableHeader header = (JTableHeader) c;
header.setDraggedColumn(null);
header.repaint();
header.getTable().repaint();
super.show(c, x, y);
}
}
};
popup.add("Item 1");
popup.add("Item 2");
popup.add("Item 3");
table.getTableHeader().setComponentPopupMenu(popup);
return table;
}
private void setupHeader(JTableHeader h) {
h.setDraggedColumn(isSelected && isPressed ? getColumn() : null);
MouseEvent e = isSelected && !isPressed ?
new MouseEvent(h, MouseEvent.MOUSE_ENTERED, 1, 0, 1, 1, 0, false) :
new MouseEvent(h, MouseEvent.MOUSE_EXITED, 1, 0, 0, 0, 0, false);
h.dispatchEvent(e);
}
private void setupHeader(JTableHeader h) {
h.setDraggedColumn(isSelected && isPressed ? getColumn() : null);
MouseEvent e = isSelected && !isPressed ?
new MouseEvent(h, MouseEvent.MOUSE_ENTERED, 1, 0, 1, 1, 0, false) :
new MouseEvent(h, MouseEvent.MOUSE_EXITED, 1, 0, 0, 0, 0, false);
h.dispatchEvent(e);
}
@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 show(Component c, int x, int y) {
if (c instanceof JTableHeader) {
JTableHeader header = (JTableHeader) c;
header.setDraggedColumn(null);
header.repaint();
header.getTable().repaint();
index = header.columnAtPoint(new Point(x, y));
if (index >= 0) {
super.show(c, x, y);
}
}
}
@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);
}
}
@Override public void show(Component c, int x, int y) {
if (c instanceof JTableHeader) {
JTableHeader header = (JTableHeader) c;
header.setDraggedColumn(null);
header.repaint();
header.getTable().repaint();
updateMenuItems(header.getColumnModel());
super.show(c, x, y);
}
}