java设置文本框不显示光标_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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值