gpt4 book ai didi

java - 当鼠标位于应用程序窗口之外时,从 swing 拖动(我的意思是图像,而不是位置)时是否可以更改鼠标光标?

转载 作者:太空宇宙 更新时间:2023-11-04 12:44:43 26 4
gpt4 key购买 nike

我有多窗口java swing应用程序,支持窗口之间的拖放

我想全局更改鼠标光标,即使它位于应用程序窗口之间。

最明显的解决方案是在启动拖动组件上调用的Component.setCursor(),或者在主窗口上调用,这不起作用。

最佳答案

然后,我发现在不使用 native 、依赖于平台的 api 的情况下执行此操作的唯一方法是使用 java Swing 的 DnD api,它允许您在拖动时设置自定义鼠标光标

import javax.swing.*;

import java.awt.Cursor;
import java.awt.datatransfer.StringSelection;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DragGestureListener;
import java.awt.dnd.DragSource;

public class DndExample extends JFrame {

public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new DndExample());
}

public DndExample() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JLabel dragLabel = createDndLabel();
getContentPane().add(dragLabel);
pack();
setVisible(true);
}

private JLabel createDndLabel() {
JLabel label = new JLabel("Drag me, please");


DragGestureListener dragGestureListener = (dragTrigger) -> {
dragTrigger.startDrag(new Cursor(Cursor.HAND_CURSOR), new StringSelection(label.getText()));
};

DragSource dragSource = DragSource.getDefaultDragSource();
dragSource.createDefaultDragGestureRecognizer(label, DnDConstants.ACTION_COPY, dragGestureListener);

return label;
}
}

关于java - 当鼠标位于应用程序窗口之外时,从 swing 拖动(我的意思是图像,而不是位置)时是否可以更改鼠标光标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36446972/

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