2016-04-06 7 views
1

multi-window java swing applicationdrag&dropwindowsの間にあります。マウスがアプリケーションウィンドウの外にあるときに、マウスのカーソルをスイングからドラッグすると、マウスカーソルを変更することはできますか?

mouse cursorapplication windowsの間であっても、変更したいと思います。 dragを開始したり、メインwindow上では動作しませんcomponentで呼び出さComponent.setCursor()ある

最も明白な解決策。

+0

をドラッグするときは、カスタムマウスカーソルを設定することを可能にするJavaのSwingのドラッグ&ドロップAPIを使用することで変更することが可能ですマウスがアプリケーションウィンドウの外にあるときにマウスポインタ(スクロール)(カーソル)が表示されますか? "*ネイティブのみを使用します。 @ f1sh検索用語は何ですか?ソリューションはJava固有のものでしたか? –

+0

@ f1sh * ".. Javaでのマウスの位置を設定しますか?" * O_o質問を読む時間が増えているはずです。 –

+0

@AndrewThompsonなぜリンクされた質問が間違っていますか?あなたは ''ロボット ''を使って私にjavaでマウスを動かすことができないと言っていますか? – f1sh

答えて

0

それから私は、ネイティブ、プラットフォーム依存の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; 
    } 
} 
関連する問題