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))。