好的,我有这个函数,我在我创建的每个JButton上调用它,它工作正常。
public void addcursor(JButton button)
{
button.getModel().addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
ButtonModel model=(ButtonModel) e.getSource();
if(model.isRollover())
setCursor(new Cursor(Cursor.HAND_CURSOR));
else
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
});
}
但是,此代码仅在我移动JButton时有效,并且当我离开Button时将鼠标光标设置回默认值。所以,在一个单独的类/函数上:
gui.getRootPane().setCursor(new Cursor(Cursor.WAIT_CURSOR));
gui.getRootPane().setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
在调用这两个函数之后,第一个函数addcursor(JButton)不再起作用了,我只想将光标设置回默认后将按钮getModel设置回来。请注意,我也尝试在将crusor设置为默认值后重新调用addcursoor(JButton)函数,但它仍然无效。谢谢。
答案 0 :(得分:4)
组件已经支持将在鼠标输入事件中更改的游标:
button.setCursor( Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
光标也会在鼠标退出事件时重置。因此,您不需要任何特殊逻辑来支持此类功能。
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
在手动操作光标时,我总是使用setCursor(null)
。