java - 如何通过鼠标按下和拖动关闭 jtable 单元格选择

标签 java swing jtable selection

我想使用 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/

相关文章:

java - 将两个数组放入 Jtable 行

java - 如何运行函数并获取值并将其添加到Flutter中的文本中

java - 程序仅读取.txt文件java中的最后一行

java - Android 中音频信号的 FFT 解码器

java - JPanel位置和大小根据屏幕大小变化

java - 如何将文本设置为禁用的 JTextArea

java - JTable 使用数组字符串。这些数据在 try-catch 中

java - 用 MySQL 数据修改 JTable 的列标题

java - 如何在 JTable 中选择一行?

java - Macintosh 上的 Swing GUI 问题