ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – Swing JDialog中的自定义光标

2019-06-07 10:57:34  阅读:329  来源: 互联网

标签:java swing joptionpane custom-cursor jdialog


我有一个Java Swing应用程序,使用Java 1.5在Mac OS X 10.5上开发.

当用户将鼠标移动到对话框中的某些文本时,我正在尝试使用自定义光标.但是,光标永远不会改变.

当我不使用JFrame而不是JDialog时,光标确实会改变.但是我必须自己编写所有的对话框代码.

如何让光标出现?

这是我可以创建的最简单的代码来演示问题:

import javax.swing.*;
import java.awt.*;

public class CursorTest {

    public static void main(String[] args) {
        JLabel label = new JLabel("Move mouse here for hand cursor");
        label.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        JOptionPane pane = new JOptionPane(label);
        pane.setOptions(new Object[]{"OK"});

        JDialog dialog = pane.createDialog(null, "Test Dialog");
        dialog.setVisible(true);
    }
}

解决方法:

看起来它是Java 1.5中的一个错误:我首先尝试使用Java 1.6.0_07并且它按预期工作(在Windows XP上).然后我用Java 1.5.0_06重新编译,确实光标仍处于默认状态.

知道MacOS上Java 1.6的困难,我发现很难解决这个问题……

Bug ID: 5079694 JDialog doesn’t respect setCursor
他们给出了解决方法……

[编辑]经过测试的解决方法:

public class CursorTest extends JFrame
{
  private CursorTest()
  {
  }

  private void ShowDialog()
  {
        JLabel label = new JLabel("Move mouse here for hand cursor");
        label.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        JOptionPane pane = new JOptionPane(label);
        pane.setOptions(new Object[] { "OK" } );

        JDialog dialog = pane.createDialog(this, "Test Dialog");
        dialog.setVisible(true);
  }

  public static void main(String[] args)
  {
    SwingUtilities.invokeLater(new Runnable()
    {
      public void run()
      {
        CursorTest testFrame = new CursorTest();
        testFrame.setTitle("Test GUI");
        testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        testFrame.setSize(500, 300);
        testFrame.setVisible(true);
        testFrame.ShowDialog();
      }
    });
  }
}

适用于我的JDK&系统.

标签:java,swing,joptionpane,custom-cursor,jdialog
来源: https://codeday.me/bug/20190607/1193346.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有