栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

触发setCursor方法后光标图标未更改

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

触发setCursor方法后光标图标未更改

正如我的评论中已经提到的那样:重新/设置游标并不是一件容易的事,甚至对于单个组件也不是很简单的:-)基本问题(在递归游标设置中等待)是假设所有组件
具有默认值光标。

如表头所示,这种假设是不正确的:在该组件上,“默认”是defaultCursor或resizeCursor,具体取决于鼠标的位置。另外,内部光标切换不是很聪明:它不检查状态(从我的头顶看,前一阵子被这个事实击中了:-)

不能完全确定要达到的目标,因此没有具体解决方案,除了完全删除递归设置外,很难正确地做到这一点。选项可能是

  • 使(框架根窗格的)glassPane可见,并在其上设置waitCursor
  • 在较小的区域上使用JLayer(jdk7)或JXLayer(jdk6),然后在该区域上设置waitCursor
  • 在某个地方使用JProgressBar或JXBusyLabel(在SwingX项目中)使用较少干扰的可视化

附录 (@mKorbel :-)

这个问题很容易重现,只需对OP
SSCCE稍作更改(谢谢!):如下更改addButton方法,然后单击按钮,在显示等待光标的同时,将鼠标移到标题中,然后另一列(跨列边界)。这样做多次将导致标题上出现不可预测的游标…

private void addButton() {    button = new JButton("Click Me");    final ActionListener off = new ActionListener() {        @Override        public void actionPerformed(ActionEvent e) { setDefaultCursor(); button.setEnabled(true);        }    };    button.addActionListener( new ActionListener() {        public void actionPerformed(ActionEvent ae) { setWaitCursor(); button.setEnabled(false); Timer timer = new Timer(2000, off); timer.setRepeats(false); timer.start();        }    });    add(button, BorderLayout.NORTH);}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394888.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号