3

我遇到了一些我无法弄清楚的问题......我正在编写一个带有接受拖放的 JList 的 Swing Java 应用程序。我想在将文件或文件夹从我的系统拖到 Java 应用程序上时更改光标。

4

2 回答 2

4

我自己找到了...感谢克林顿的回答。这是我用过的:

首先创建JList...你们都知道怎么做...然后我添加了一个setDropTarget:

lstFiles.setDropTarget(new DropTarget()
{
    @Override
    public synchronized void drop(DropTargetDropEvent dtde) 
    {
        this.changeToNormal();
        //handle the drop... [...]
    }

    @Override
    public synchronized void dragEnter(DropTargetDragEvent dtde) 
    {
        //Change cursor...
        Cursor cursor = new Cursor(Cursor.HAND_CURSOR);
        setCursor(cursor);

        //Change JList background...
        lstFiles.setBackground(Color.LIGHT_GRAY);
    }

    @Override
    public synchronized void dragExit(DropTargetEvent dtde) 
    {
        this.changeToNormal();
    }

    private void changeToNormal()
    {
        //Set cursor to default.
        Cursor cursor = new Cursor(Cursor.DEFAULT_CURSOR);
        setCursor(cursor);

        //Set background to normal...
        lstFiles.setBackground(Color.WHITE);
    }
});
于 2009-12-22T13:21:40.957 回答
1

当用户将鼠标移到您的 JList 上时,以下内容只会更改光标。

当您将鼠标悬停在组件(即您的 JList)上时,您可以使用鼠标侦听器和setCursor方法更改光标。

基本上只需将鼠标侦听器添加到您的 JList 并使用 setCursor 在用户将鼠标悬停在应用程序中的组件上时更改光标(mouseEntered 和 mouseExit)。您可能还需要对拖放代码进行一些调查,以便仅在将有效内容拖入 JList 时更改光标。

希望这个对你有帮助。

于 2009-12-21T22:35:28.490 回答