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

java等待光标显示问题

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

java等待光标显示问题

搜索互联网后,我找到了问题的答案。

关键是将光标设置在包含要显示繁忙光标的组件的框架的玻璃窗格上。我从网上的以下文章中得到了这个主意。

我修改了我的SSCE,使其适用于框架内的组件设置其自己的光标的情况。这是修改后的SSCE。

public class BusyCursorTest extends javax.swing.Jframe {private javax.swing.JPanel cursorPanel = null;public BusyCursorTest() {    javax.swing.JMenuBar menuBar = new javax.swing.JMenuBar();    javax.swing.JMenu menu = new javax.swing.JMenu("Menu");    javax.swing.JMenuItem wait1 = new javax.swing.JMenuItem("Wait 100 ms");    javax.swing.JMenuItem wait2 = new javax.swing.JMenuItem("Wait 250 ms");    javax.swing.JMenuItem wait3 = new javax.swing.JMenuItem("Wait 500 ms");    javax.swing.JMenuItem wait4 = new javax.swing.JMenuItem("Wait 1000 ms");    menu.add(wait1);    menu.add(wait2);    menu.add(wait3);    menu.add(wait4);    menuBar.add(menu);    setJMenuBar(menuBar);    wait1.addActionListener(getActionListener(this, delayActionListener(100)));    wait2.addActionListener(getActionListener(this, delayActionListener(250)));    wait3.addActionListener(getActionListener(this, delayActionListener(500)));    wait4.addActionListener(getActionListener(this, delayActionListener(1000)));    cursorPanel = new javax.swing.JPanel();    cursorPanel.addMouseListener(new java.awt.event.MouseAdapter() {        public void mouseEntered(java.awt.event.MouseEvent e) { cursorPanel.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.CROSSHAIR_CURSOR));        }        public void mouseExited(java.awt.event.MouseEvent e) { cursorPanel.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.DEFAULT_CURSOR));        }    });    javax.swing.JTabbedPane tabbedPane = new javax.swing.JTabbedPane();    tabbedPane.addTab("Default", new javax.swing.JPanel());    tabbedPane.addTab("Cursor change", cursorPanel);    getContentPane().add(tabbedPane);    setTitle("Cursor test");    setSize(400, 400);    setDefaultCloseOperation(javax.swing.Jframe.DISPOSE_ON_CLOSE);    setVisible(true);}private java.awt.event.ActionListener delayActionListener(final int delay) {    java.awt.event.ActionListener listener = new java.awt.event.ActionListener() {        public void actionPerformed(java.awt.event.ActionEvent ae) { try {     Thread.sleep(delay); } catch (InterruptedException e) { }        }    };    return listener;}public static void main(String[] args) {    new BusyCursorTest();}public static java.awt.event.ActionListener getActionListener(final javax.swing.Jframe frame,    final java.awt.event.ActionListener originalActionListener) {    java.awt.event.ActionListener actionListener = new java.awt.event.ActionListener() {        public void actionPerformed(final java.awt.event.ActionEvent e) { java.util.TimerTask timerTask = new java.util.TimerTask() {     public void run() {         originalCursor = frame.getCursor();         startWaitCursor(frame);     } }; java.util.Timer timer = new java.util.Timer(); try {     timer.schedule(timerTask, DELAY_MS);     originalActionListener.actionPerformed(e); } finally {     timer.cancel();     stopWaitCursor(frame); }        }    };    return actionListener;}private static void startWaitCursor(javax.swing.Jframe frame) {    frame.getGlassPane().setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.WAIT_CURSOR));    frame.getGlassPane().addMouseListener(mouseAdapter);    frame.getGlassPane().setVisible(true);}private static void stopWaitCursor(javax.swing.Jframe frame) {    frame.getGlassPane().setCursor(originalCursor);    frame.getGlassPane().removeMouseListener(mouseAdapter);    frame.getGlassPane().setVisible(false);}private static java.awt.Cursor originalCursor = null;private static final java.awt.event.MouseAdapter mouseAdapter = new java.awt.event.MouseAdapter() {};public static final int DELAY_MS = 250;}


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

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

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