【发布时间】:2013-08-04 23:53:46
【问题描述】:
基于this post,我实现了一个方便的功能,可以在 JTable 中拖放行以重新排序。但是,该功能附加到整个表格,我只想将其附加到一列(显示为图标),以便鼠标事件不会在其他列中受到影响。
整行将被拖动/重新排序,但是我想使用一个专门的图标作为拖动的“手柄”,它会出现在最左边或最右边的列中。我以前见过这个概念(不是在 java 中),但现在找不到合适的例子。
目前,拖动处理程序是这样安装的:
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.setDragEnabled(true);
table.setDropMode(DropMode.INSERT_ROWS);
table.setTransferHandler(new ReorderRowTransferHandler(table));
有没有办法将拖动处理程序仅附加到单个列?
编辑:@Kleopatra 的回答很好,但是我的部分问题是我的其他列包含组件,例如由于拖动处理程序而不再显示其“按下”状态的按钮。我希望找到一个限制拖动鼠标处理程序的解决方案,以便它影响第一列。
【问题讨论】:
-
或者,考虑使用组合编辑器为一行选择所需的图标。
-
所以你想移动一个单元格?
-
@MadProgrammer 不,我想移动整行,但不让整行在启动拖动时处于活动状态......所以最左边(或最右边)会有一个图标列,这将是拖动的“句柄”。
-
仍然不完全确定你的问题是什么,如果我的回答不合适,请评论:-)
-
我很确定表格自动拖动行为将在 TableUI 中绑定......我可能需要考虑将自定义鼠标侦听器附加到表格并从那里手动启动拖动.. .