private void initializeRightClickMenu(Component component) {
// 右クリック用のメニューを定義
JMenuitem jmenuitem1, jmenuitem2;
jmenuitem1 = new JMenuitem("red"); // 1つ目のメニュー
jmenuitem2 = new JMenuitem("blue"); // 2つ目のメニュー
// 各メニュー選択時の処理
jmenuitem1.addActionListener(new SampleActionListener("Red"));
jmenuitem2.addActionListener(new SampleActionListener("Blue"));
// 右クリック時に表示するポップアップを定義
JPopupmenu jpopup = new JPopupmenu();
jpopup.add(jmenuitem1); // red
jpopup.add(jmenuitem2); // blue
// マウスイベント用リスナー追加
component.addMouseListener(new SampleMouseListener(
component, jpopup));
// ポップアップをフレームに設定
jframe.add(jpopup);
}
/**
* マウスイベントリスナー
*/
class SampleMouseListener extends MouseAdapter {
/**
* イベント発生元のコンポーネント
*/
private Component component;
/**
* 表示するポップアップ
*/
JPopupMenu jpopup;
/**
* コンストラクタ
*
* @param component イベント発生元のコンポーネント
* @param jpopup 表示するポップアップ
*/
public SampleMouseListener(Component component, JPopupMenu jpopup) {
super();
this.component = component;
this.jpopup = jpopup;
}
/**
* コンポーネント上でマウスボタンを押すと呼び出されます。
*/
public void mousePressed(MouseEvent e){
/** 右押下時のみ **/
if(SwingUtilities.isRightMouseButton(e)) {
// クリックされた位置にポップアップを表示
jpopup.show(component, e.getX(), e.getY());
}
}
}
/**
* メニュー選択時の処理
*/
class SampleEventListener implements ActionListener {
/**
* 色を表す文字列
*/
private String color;
/**
* コンストラクタ
*
* @param color 色を表す文字列
*/
public SampleEventListener(String color) {
super();
this.color = color;
}
/**
* イベント発生時の処理
*/
public void actionPerformed(ActionEvent e) {
if(color.equals("Red")) {
jPanel.setBackground(Color.RED);
}
else if(color.equals("Blue")) {
jPanel.setBackground(Color.BLUE);
}
}
}
|