Javaはトリプルクリックのイベント処理ができるから面白い
JavaのGUIアプリの面白い機能の1つに、マウスクリックイベントでトリプルクリックのイベント処理が可能だってことです。
まあ、トリプルクリックなんて誰も使わないだろうけど、隠し機能なんかで使えなくもありません。
C#では、各GUIクラスにClickとDoubleClickというイベントがあるので、イベント処理はその2つのみですが、Javaの場合、MouseListenerインターフェース内のmouseClickedメソッドに、MouseEventクラスが渡されていて、クリック数に応じた処理が可能なのです。
↓こんな感じ。
public void mouseClicked(MouseEvent e){
int cnt = e.getClickCount();
if(cnt==2) System.out.println("ダブルクリック");
if(cnt==3) System.out.println("トリプルクリック");
if(cnt==4) System.out.println("クアドラプルクリック");
}
[ad#top-1]
上のプログラムを見てわかる通り、MouseEventのgetClickCountメソッドでクリック数に応じた処理(今回はコンソールへの出力だけですが)をさせています。4クリック(クアドラブルクリック)も入れておきました。
とりあえず、テスト用のプログラムを組みました。JFrameにJLabelを貼り付けて、そこをクリックするとイベントが発生するようになっています。
こいつを4回クリック(クアドラプルクリック)をしてみると、結果はごらんのとおり。クアドラプルクリックだけじゃなく、ダブル、トリプルも条件として成り立ってしまうようですね。まあ、ここはプログラム次第でなんとかするしかないかな。
今回のテストプログラムの全体のソースコードは以下の通りです。
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ClickTest extends JFrame implements MouseListener{
protected Container pane;
public static void main(String[] args){
ClickTest f = new ClickTest("クリックテスト");
f.setLocationRelativeTo(null);
f.setVisible(true);
}
ClickTest(String t){
super(t);
this.setSize(400, 300);
pane = getContentPane();
pane.setLayout(new FlowLayout());
JLabel label = new JLabel("ここをクリック");
pane.add(label);
label.addMouseListener( this );
}
public void mouseClicked(MouseEvent e){
int cnt = e.getClickCount();
if(cnt==2) System.out.println("ダブルクリック");
if(cnt==3) System.out.println("トリプルクリック");
if(cnt==4) System.out.println("クアドラプルクリック");
}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
}
.
[ad#ad-1]
スポンサーリンク

