我想使用JTable,但要使用其他单元格选择方法,而不是单击单元格。我正在使用玻璃窗格来允许用户绘制矩形,并发现要选择的矩形中包含哪些单元格。但是我只想选择一个单元格,如果它完全在矩形内。例如,想象一个简单的3 x 3桌子。我想要选择中间单元格(1,1)的用户。我希望他们能够单击第一个单元格0,0并向下拖动到单元格2,2,以绘制矩形进行选择。但是我不希望选择单元0,0或2,2。或为此选择全部9个。这是一个简化的示例。绘制矩形实际上可能包含屏幕上多个表中的单元格。
我研究了实现ListSelectionModel接口的方法,但实际上并不想尝试重写它。在进行实验时,我看到在模型中单击并拖动表时,模型中的setSelectionInterval()被疯狂地调用(对于每个鼠标移动)。我真正想要的是找到一种简单的方法来关闭对SelectionModel进行调用的表上的所有侦听器/机制,同时将模型保持在原位。我仍然希望它例如报告isSelectedIndex()。我会告诉模型选择什么间隔。
我发现在JTables中固有地内置了鼠标输入适配器?如果可能的话,我想将其关闭。
谢谢,BBB
对于通用/基于文本的问题,您将获得通用的,基于文本的答案。:)首先卸载默认情况下安装在表上的MouseListener:
MouseListener[] listeners = myTable.getMouseListeners();
for (MouseListener l : listeners)
{
myTable.removeMouseListener(l);
}
然后,将自己的MouseListener添加到表中(如果需要,请使用MouseAdapter),并覆盖“ mousePressed” /“ mouseReleased”方法以记录拖动开始和拖动结束的点。确定封闭的矩形并调用:
setRowSelectionInterval(#, #)
setColumnSelectionInterval(#,#)
选择一个(或多个)单元格。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句