【问题标题】:How to use system mouse cursors (like Cursor.TEXT_CURSOR) in lwjgl/slick2D如何在 lwjgl/slick2D 中使用系统鼠标光标(如 Cursor.TEXT_CURSOR)
【发布时间】:2016-06-14 11:57:33
【问题描述】:

我目前正在用 slick2D 编写一个 java 程序,并且想更改鼠标光标,但我不想使用下载的图像。有没有办法将鼠标光标更改为系统光标之一?

【问题讨论】:

  • 请注明是LWJGL2还是LWJGL3
  • 我不确定为什么这个问题会收到 -1。这是一个非常直接、易于理解且易于回答的问题。

标签: java cursor lwjgl slick2d


【解决方案1】:

您可以尝试获取 Display 实例并通过以下方式更改其光标:

Display.setCursor(Cursor.WAIT_CURSOR);

您还可以将LWJGL 显示附加到JFrame,然后更改光标。

【讨论】:

    【解决方案2】:

    由于系统鼠标光标通常存储在 C:\Windows\Cursors 您应该能够访问这些文件夹并使用其中的文件。 (如果您有 Windows,则需要针对您的操作系统进行聊天)

    如果您现在查看 Slick2D 文档,您会发现已经有一个功能可以解决您的问题。

    http://slick.ninjacave.com/javadoc/org/newdawn/slick/AppGameContainer.html

     void setMouseCursor(org.lwjgl.input.Cursor cursor, int hotSpotX, int hotSpotY) 
    
     void setMouseCursor(ImageData data, int hotSpotX, int hotSpotY) 
    
     void setMouseCursor(Image image, int hotSpotX, int hotSpotY) 
    
     void setMouseCursor(java.lang.String ref, int hotSpotX, int hotSpotY) 
    

    所以您应该能够从您的应用容器中使用这些方法之一并设置光标。

    我不确定您是否可以直接从位于 Windows 文件夹中的 .cur 文件创建新图像,但您需要检查一下。这意味着:

    app.SetMouseCursor(new Image("C\Windows\Cursors\aero_link.cur"))
    

    可能不会起作用。

    第一个需要 org.lwjgl.input.Cursor 游标的游标应该可以正常工作。请参阅此处了解构造 org.lwjgl.input.Cursor Cusor 对象需要哪些参数 (http://legacy.lwjgl.org/javadoc/org/lwjgl/input/Cursor.html)

    最坏的情况是您需要在加载之前将 .cur 文件转换为 jpg 或 png 文件,或者 Windows 已将 .cur 文件作为可用的图像文件存储在某处。


    如果我误解了您的问题,您可以简单地按照以下方式进行操作:

    AppGameContainer apgcc = new AppGameContainer()
    apgcc.setCursor(new Cursor(Cursor.MOVE_CURSOR)); //e.g. or AppGameContainer in case you are not programming an Applet.
    

    不过,我不认为这些真的是系统光标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多