我想使用 JTable 但使用不同的单元格选择方法而不是单击单元格。我正在使用 glasspane 允许用户绘制一个矩形并发现矩形中包含哪些单元格以供选择。但我只想选择一个完全在矩形内的单元格。例如,想象一个简单的 3 x 3 table 。用户我想选择中间的单元格 (1,1)。我希望他们能够单击第一个单元格 0,0 并向下拖动到单元格 2,2 以绘制矩形以供选择。但我不想选择单元格 0,0 或 2,2。或者就此而言,选择所有 9 个。这是一个简化的例子。绘制矩形实际上可能包含来自屏幕上多个表格的单元格。
我研究了 ListSelectionModel 接口(interface)的实现,但真的不想尝试重写它。在进行实验时,我看到模型中的 setSelectionInterval() 在我单击并在表格中四处拖动时被疯狂地调用(针对每一次鼠标移动)。我真正想要的是找到一种简单的方法来关闭桌面上调用 SelectionModel 的任何监听器/机制,同时保持模型就位。例如,我仍然希望它报告 isSelectedIndex() 。我会告诉模型选择了哪些间隔。
我想 JTables 中有一个固有内置的鼠标输入适配器?如果可能,我想将其关闭。
谢谢, BBB
最佳答案
对于通用/基于文本的问题,您会得到通用的基于文本的响应。 :) 首先卸载默认安装在 table 上的 MouseListeners:
MouseListener[] listeners = myTable.getMouseListeners();
for (MouseListener l : listeners)
{
myTable.removeMouseListener(l);
}
然后,将您自己的 MouseListener 添加到表中(如果需要,请使用 MouseAdapter)并覆盖“mousePressed”/“mouseReleased”方法以记录拖动开始和拖动结束的点。确定外接矩形并调用:
setRowSelectionInterval(#, #)
setColumnSelectionInterval(#,#)
选择一个(或多个)单元格。
关于java - 如何通过鼠标按下和拖动关闭 jtable 单元格选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9106719/