古詩詞大全網 - 成語用法 - 2018年3月計算機二級考試JAVA入門知識點:鼠標事件

2018年3月計算機二級考試JAVA入門知識點:鼠標事件

  2018年3月計算機二級考試JAVA入門知識點:鼠標事件

 鼠標事件的事件源往往與容器相關,當鼠標進入容器、離開容器,或者在容器中單擊鼠標、拖動鼠標時都會發生鼠標事件。java語言為處理鼠標事件提供兩個接口:MouseListener,MouseMotionListener接口。

 MouseListener接口

 MouseListener接口能處理5種鼠標事件:按下鼠標,釋放鼠標,點擊鼠標、鼠標進入、鼠標退出。相應的方法有:

 (1) getX():鼠標的X坐標

 (2) getY():鼠標的Y坐標

 (3) getModifiers():獲取鼠標的左鍵或右鍵。

 (4) getClickCount():鼠標被點擊的次數。

 (5) getSource():獲取發生鼠標的事件源。

 (6) addMouseListener(監視器):加放監視器。

 (7) removeMouseListener(監視器):移去監視器。

 要實現的MouseListener接口的方法有:

 (1) mousePressed(MouseEvent e);

 (2) mouseReleased(MouseEvent e);

 (3) mouseEntered(MouseEvent e);

 (4) mouseExited(MouseEvent e);

 (5) mouseClicked(MouseEvent e);

 例 11-18小應用程序設置了壹個文本區,用於記錄壹系列鼠標事件。當鼠標進入小應用程序窗口時,文本區顯示“鼠標進來”;當鼠標離開 窗口時,文本區顯示“鼠標走開”;當鼠標被按下時,文本區顯示“鼠標按下”,當鼠標被雙擊時,文本區顯示“鼠標雙擊”;並顯示鼠標的坐標。程序還顯示壹個紅色的圓,當點擊鼠標時,圓的半徑會不斷地變大(查看源文件)。

 任何組件上都可以發生鼠標事件:鼠標進入、鼠標退出、按下鼠標等。例如,在上述程序中添加壹個按鈕,並給按鈕對象添加鼠標監視器,將上述程序中的init()方法修改成如下形式,即能示意按鈕上的所有鼠標事件。

 JButton button;

 public void init(){

 button = new JButton(“按鈕也能發生鼠標事件”);

 r = 10;

 text = new JTextArea(15,20);

 add(button);

 add(text);

 button.addMouseListener(this);

 }

 如果程序希望進壹步知道按下或點擊的是鼠標左鍵或右鍵,鼠標的左鍵或右鍵可用InputEvent類中的常量BUTTON1_MASK和BUTTON3_MASK來判定。例如,以下表達式判斷是否按下或點擊了鼠標右鍵:

 e.getModifiers()==InputEvent. BUTTON3_MASK

 MouseMotionListener接口

 MouseMotionListener接口處理拖動鼠標和鼠標移動兩種事件。

 註冊監視器的方法是:

 addMouseMotionListener(監視器)

 要實現的的接口方法有兩個:

 (1) mouseDragged(MouseEvent e)

 (2) mouseMoved(MouseEvent e)

 例 11-19壹個滾動條與顯示窗口同步變化的應用程序。窗口有壹個方塊,用鼠標拖運方塊,或用鼠標點擊窗口,方塊改變顯示位置,相應水平和垂直滾動條的滑塊也會改變它們在滾動條中的位置。反之,移動滾動條的滑塊,方塊在窗口中的顯示位置也會改變(查看源文件)。

 上述例子中,如果只要求通過滑動滑塊,改變內容的顯示位置,可以簡單地使用滾動面板JScrollPane。如果是這樣,關於滾動條的創建和控制都可以免去,直接由JScrollPane內部實現。參見以下修改後的MyWindow的定義:

 class MyWindow extends JFrame{

 public MyWindow(String s){

 super(s);

 Container con = this.getContentPane();

 con.setLayout(new BorderLayout());

 this.setLocaltion(100,100);

 MyListener listener = new MyListener();

 listener.setPreferredSize(new Dimension(700,700));

 JScrollPane scrolledCanvas = new JScrollPane(listener);

 this.add(scrolledCanvas,BorderLayout.CENTER);

 this.setVisible(true);

 this.pack();

 }

 public Dimension getPreferredSize(){

 return new Dimension(400,400);

 }

 }

 鼠標指針形狀也能由程序控制 ,setCursor()方法能設置鼠標指針形狀。例如,代碼setCursor(Cursor.getPredefinedCursor(cursor.WAIT_CURSOR))。