gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 03:11:30 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com