作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为 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/
我是一名优秀的程序员,十分优秀!