如何在 JTable 中拖放一行?
如何设置 JTable 以便能够将行拖动到表中的不同索引。 例如,如果我有 5 行,我想将第 4 行拖动到第二个位置?
How do you setup a JTable to be able to drag a row to a different index in the table. For example if I have 5 rows and I want to drag the 4th row to the 2nd position?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
以下内容允许 JTable 对单个拖动的行重新排序:
您的 TableModel 应实现以下内容以允许重新排序:
此 TransferHandler 类处理拖动和拖动操作。 放下,并在手势完成时调用 TableModel 上的 reorder() 。
The following allows JTable re-ordering of a single dragged row:
Your TableModel should implement the following to allow for re-ordering:
This TransferHandler class handles the drag & drop, and calls reorder() on your TableModel when the gesture is completed.
查看 Java 的 拖放 部分教程。 有一些关于如何为
JTable
实现此功能的示例。Check out the drag and drop section of the Java Tutorial. There are some examples on how to implement this for
JTable
.我喜欢 Soley 的修改,但他的代码依赖于外部库,我不确定他从哪里得到它,所以我重新编写了它,这样你就不需要 TableUtil 类了...
I like Soley's modifications, but his code relies on an external library, and I'm not sure where he got it from, so I re-wrote it so that you don't need the TableUtil class...
也许…… 像这样:
perhaps sth. like this:
只是为了记录和多行重新排序:
在某处使用......
这是上面答案中的主类,我对其进行了修改以匹配多行 DnD 的需求。
我所做的就是使用第一个选定的行,然后计算放置位置上方的行。 删除选定的项目并将它们保留在对象列表中(行数组对象)。 然后将它们插入回计算行。 最后选择删除/拖动的行来完成该过程。
Just for the records and multiple row re-ordering:
use somewhere....
This is the main class in the above answer, I modified that to match the needs for multiple row DnD.
All I did was to use the first selected row, then calculate the rows above the drop place. Removed seleced items and keep them in a list of objects (row array object). then insert them back to calculated row. and finally select the removed/dragged rows to complete the process.