[英]drag and drop rows from a single column (not whole row)
基于这篇文章,我已经实现了一个方便的功能来拖放JTable中的行来重新排序它们。 然而,该功能附加到整个表格,我只想将它附加到一列(显示为图标),以便鼠标事件不会在其他列中受到影响。
整行将被拖动/重新排序,但是我想使用专门的图标作为拖动的“句柄”,它将显示在最左侧或最右侧的列中。 我之前已经看过这个概念(不是在java中),但现在找不到合适的例子。
目前,拖动处理程序安装如下:
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.setDragEnabled(true);
table.setDropMode(DropMode.INSERT_ROWS);
table.setTransferHandler(new ReorderRowTransferHandler(table));
有没有办法将拖动处理程序仅附加到单个列?
编辑:@ Kleopatra的答案是好的,但我的问题的一部分是我的其他列包含comoponents,如按钮,由于拖动处理程序,不再显示其“按下”状态。 我希望找到一个限制拖动鼠标处理程序的解决方案,以便它影响第一列。
要仅在表的第一列(fi)中启动鼠标拖动时启动dnd,请实现自定义TransferHandler的exportAsDrag方法以将NONE返回到其他位置,例如:
@Override
public void exportAsDrag(JComponent comp, InputEvent e, int action) {
if (e instanceof MouseEvent) {
MouseEvent mouse = (MouseEvent) e;
if (table.columnAtPoint(mouse.getPoint()) != 0) {
action = NONE;
}
}
super.exportAsDrag(comp, e, action);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.