gpt4 book ai didi

java - JTable 不希望的拖放行为

转载 作者:行者123 更新时间:2023-12-04 05:37:56 24 4
gpt4 key购买 nike

我正在尝试向我的应用程序添加拖放功能,其中拖动事件的发起者是 JTable .我目前正在使用内置的拖动支持 JTable调用优惠 setDragEnabled(true) .

我面临的问题是,要开始拖动操作,必须先单击表格的一行,然后松开鼠标;它只是 第二个生成拖动事件的鼠标按下(以及所有后续鼠标按下)。即使 JTable 也会发生这种情况失去焦点 - 即一旦执行了第一次左键单击操作,拖放就可以完美运行 直到我换了一个新的 TableModel .安装新模型后,需要在表格上左键单击,然后再开始拖动。

阅读 setDragEnabled(boolean) 的 API 文档这意味着这是 L&F 的责任,因此我可能无法解决此问题。有没有人有什么建议?我正在使用 Alloy L&F,但不愿意改变它。

最佳答案

我发现了一个hacky的解决方案,那就是添加一个MouseListenerJTable并钩入 TransferHandle r 的 exportAsDrag按下鼠标时的方法:

    final JTable actionTbl = new JTable();
actionTbl.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent evt) {
// Need to explicitly start a drag operation when the mouse is pressed.
// Otherwise drags are only started *after* the user has clicked once
// on the JTable (this could be down to the L&F not doing the right thing).
actionTbl.getTransferHandler().exportAsDrag(actionTbl, evt, TransferHandler.COPY);
}
});

关于java - JTable 不希望的拖放行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11691680/

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