Java控件中的SetCursor函数对同一个控件不能使用两次吗
在做练习题的时候,我要做对Java中Cursor类众多鼠标形状常量进行测试.代码如下
这段代码能编译,能运行,只是只要一单击按钮,就会出错,不明白怎么回事.我对控件中
setCursor的用法不是很了解.
我的最终目的是单击按钮一次,更改鼠标指针的形状
import java.awt.*;
import java.awt.event.*;
public class Main {
public Main()
{
}
public static void main(String[] args) {
new MyWin();
}
}
class MyWin extends Frame implements ActionListener
{
Button mybutton;
int b[]={Cursor.CROSSHAIR_CURSOR,Cursor.CUSTOM_CURSOR,Cursor.DEFAULT_CURSOR,
Cursor.E_RESIZE_CURSOR,Cursor.HAND_CURSOR,Cursor.MOVE_CURSOR,Cursor.NE_RESIZE_CURSOR,
Cursor.NW_RESIZE_CURSOR,Cursor.N_RESIZE_CURSOR,Cursor.SE_RESIZE_CURSOR,Cursor.SW_RESIZE_CURSOR,
Cursor.S_RESIZE_CURSOR,Cursor.TEXT_CURSOR,Cursor.WAIT_CURSOR,Cursor.W_RESIZE_CURSOR};
//鼠标指针数组
int index;
MyWin()
{
setLayout(new FlowLayout());
mybutton = new Button("测试鼠标指针");
Cursor c = Cursor.getPredefinedCursor(b[0]);
mybutton.setCursor(c);
add(mybutton);
mybutton.addActionListener(this);
setBounds(100,100,300,300);
setVisible(true);
validate();
}
public void actionPerformed(ActionEvent e) //单击按钮一次,更换鼠标指针形状
{
Cursor temp = Cursor.getPredefinedCursor(b[index]);
mybutton.setCursor(temp);
index++;
}
}
------解决方案--------------------对于出现这个问题,我也十分纳闷,但是,我逐个调试后,发现不是setCursor函数的问题.
问题出在getPredefinedCursor这个函数是有异常的,我把全部静态常量逐个调试后,发现
设置Cursor.CUSTOM_CURSOR这个常量发出现异常,导致程序出错.