Java GUI鼠标光标

时间:2016-10-31 19:56:19

标签: java swing

好的,我有这个函数,我在我创建的每个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)函数,但它仍然无效。谢谢。

1 个答案:

答案 0 :(得分:4)

组件已经支持将在鼠标输入事件中更改的游标:

button.setCursor( Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

光标也会在鼠标退出事件时重置。因此,您不需要任何特殊逻辑来支持此类功能。

setCursor(new Cursor(Cursor.DEFAULT_CURSOR));

在手动操作光标时,我总是使用setCursor(null)