gpt4 book ai didi

java - 如何为我的 JTable 接收 mouseDragged 事件

转载 作者:行者123 更新时间:2023-11-30 09:16:50 25 4
gpt4 key购买 nike

我正在尝试为 JTable 编写自定义的拖放行为,但无法接收 MOUSE_DRAGGED 事件。我想问题是 native DnD 操作消耗了事件(如 mouseDragged 的 javadoc 中所述:“由于平台相关的拖放实现,MOUSE_DRAGGED 事件可能不会在 native 拖放过程中传递操作。”),但我正在寻找一种方法来禁用它或解决它。

这是一个演示问题的 SSCCE:

public class DragAndDrop {
@SuppressWarnings("serial")
public static void main(String[] args) {
JFrame f = new JFrame();
f.getContentPane().add(
new JTable(
new Object[][] {{1,2,3},{4,5,6}},
new Object[] {"one", "two", "three"})
{{

addMouseListener(new MouseAdapter() {

@Override
public void mouseDragged(MouseEvent e) {
System.out.println("mouseDragged");
}

@Override
public void mousePressed(MouseEvent e) {
System.out.println("mousePressed");
}

@Override
public void mouseReleased(MouseEvent e) {
System.out.println("mouseReleased");
}

});
}}
);

f.setVisible(true);
}
}

最佳答案

  • 只有通过使用适当的 Mouse(Xxx)Listener 并与 MouseAdapter 结合使用时才会出错

  • 您添加了 MouseListener,正确的可能是 MouseListener 并与 MouseMotionListener 一起,您可以将这两个 Listener 拆分为两个单独的代码块(另一个可能的错误)TransferHandler

.

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JTable;

public class DragAndDrop {

public static void main(String[] args) {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new JTable(new Object[][]{{1, 2, 3}, {4, 5, 6}},
new Object[]{"one", "two", "three"}) {
{
addMouseMotionListener(new MouseAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
System.out.println("mouseDragged");
}

@Override
public void mousePressed(MouseEvent e) {
System.out.println("mousePressed");
}

@Override
public void mouseReleased(MouseEvent e) {
System.out.println("mouseReleased");
}
});
}
});
f.setVisible(true);
}
}

run: 
mouseDragged mouseDragged mouseDragged
mouseDragged mouseDragged
BUILD STOPPED (total time: 1 minute 11 seconds)

关于java - 如何为我的 JTable 接收 mouseDragged 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19270931/

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