import java.awt.*;
import java.awt.event.*;
class PopupMenuDemo
{
public static void main(String args[])
{
new MainWindow();
}
}
class MainWindow extends Frame
{
PopupMenu p_menu;
// ポップアップメニュー用のラベル
final String LARGE = "Larger";
final String SMALL = "Smaller";
final String EXIT = "Exit";
// 独自メッセージ
final int WINDOW_LARGE = 2000;
final int WINDOW_SMALL = 2001;
// サイズの定義
final Dimension LARGER_SIZE = new Dimension(500,500);
final Dimension SMALLER_SIZE = new Dimension(100,100);
// コンストラクタ
public MainWindow()
{
super("Popup Menu Test");
setSize(255,255);
// ウインドウイベント処理を可能にする
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
// ポップアップメニューの構築
p_menu = new PopupMenu();
MenuItem item = new MenuItem(LARGE);
item.setActionCommand(LARGE);
p_menu.add(item);
item = new MenuItem(SMALL);
item.setActionCommand(SMALL);
p_menu.add(item);
p_menu.addSeparator();
item = new MenuItem(EXIT);
item.setActionCommand(EXIT);
p_menu.add(item);
// ポップアップメニューのアクションリスナの定義
ActionListener action_listener = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String command = e.getActionCommand();
if(command == LARGE)
{
dispatchEvent(new WindowEvent(MainWindow.this,WINDOW_LARGE));
}
else if(command == SMALL)
{
dispatchEvent(new WindowEvent(MainWindow.this,WINDOW_SMALL));
}
else if(command == EXIT)
{
System.exit(0);
}
}
};
p_menu.addActionListener(action_listener);
// マウスリスナの定義
MouseListener mouse_listener = new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
// 右ボタンが押された時、ポップアップメニューを表示する
if(e.getModifiers() == InputEvent.BUTTON3_MASK)
p_menu.show(MainWindow.this,e.getX(),e.getY());
}
};
addMouseListener(mouse_listener);
add(p_menu);
setVisible(true);
}
// ウインドウイベントの処理
protected void processWindowEvent(WindowEvent e)
{
if(e.getID() == WINDOW_LARGE)
{
this.setSize(LARGER_SIZE);
}
else if(e.getID() == WINDOW_SMALL)
{
this.setSize(SMALLER_SIZE);
}
else if(e.getID() == WindowEvent.WINDOW_CLOSING)
{
System.exit(0);
}
}
}
Source is here. (ZIP Format,1085Byte,Shift-JIS)