日期:2014-05-20  浏览次数:20631 次

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这个常量发出现异常,导致程序出错.