在java裡要自訂游標是件輕而易舉之事.
只要在元件裡設定一個游標物件就可以了.
這聽起來很簡單,實作起來也的確是很簡單.
只有Component.setCursor(Cursor)這個單純的游標設定指令而已.
也就是說,你只要建個游標(Cursor)物件,再把物件指定給元件
滑鼠游標就這樣輕而易舉的被置換過來了.
底下我們用個小範例來示範如何如用圖檔來建個影像游標.
程式只是單純的在button事件中指定了一個元件的Cursor物件而己.
只要按一下button.TextArea元件的游標就換成了Remond的大頭照了.
想玩玩這個範例程式的效果,請執行以下 Java Web Start
範例程式碼實作如下:
代碼:
複製內容到剪貼板
代碼:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
class Test extends JFrame{
private Cursor cusTand,cusRemond;
private JButton btn,btnRemond,btnTand;
private JTextArea ta;
public static void main(String[] args) {
new Test();
}
public Test() {
btn = new JButton("Normal");
btnRemond = new JButton("Remond");
btnTand = new JButton("Tand");
ta = new JTextArea(10,20);
Image TandImg= new ImageIcon(getClass().getResource("tand.gif")).getImage();
Image RemondImg= new ImageIcon(getClass().getResource("remond.jpg")).getImage();
cusTand = this.getToolkit().createCustomCursor(TandImg,new Point(16,16),"Tand");
cusRemond = this.getToolkit().createCustomCursor(RemondImg,new Point(16,16),"Tand");
Container c = getContentPane();
JPanel jp = new JPanel();
jp.add(btn);
jp.add(btnRemond);
jp.add(btnTand);
c.add(jp,BorderLayout.SOUTH);
c.add(ta,BorderLayout.CENTER);
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Performed(e);
}
});
btnRemond.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Performed(e);
}
});
btnTand.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Performed(e);
}
});
pack();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void Performed(ActionEvent e){
Object obj = e.getSource();
if(obj==btnRemond)
ta.setCursor(cusRemond);
else if(obj==btnTand)
ta.setCursor(cusTand);
else
ta.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
}