發新話題
打印

java自訂滑鼠游標

java自訂滑鼠游標

在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));
     }
  }

TOP

發新話題