本题的功能是用复选按钮来控制鼠标右键的弹出菜单是否弹出。窗口中有一个复选按钮“弹出菜单”,如果选中该复选按钮后,鼠标置于窗口上,单击鼠标右键会弹出一个菜单,单击菜单项中的选项后,后台会输出单击的菜单项,如果取消该复选按钮的选择,单击鼠标右键则不能弹出菜单。
import java. awt. * ;
import java. awt. event. * ;
class CanvasWithPopup extends Canvas
Popupmenu popup;
CanvasWithPopup(PopupMenu popup)
enableEvents(AWTEvent. MOUSE_EVENT_MASK);
this. popup=popup;
void addPopup()
add(popup);
void removePopup()
remove(popup);
protected void proeessMouseEvent(MouseEventevt)
if(popup. getParent()!=null && evt. isPopupTrigger())
popup. show(evt. getComponent(), evt. getX(), evt. getY());
super. processMouseEvent(evt);
public class java3 extends Frame implements ItemListener, ActionListener
Checkbox cb=new Checkbox("弹出菜单", false);
CanvasWithPopup canvas;
java3()
super("java3");
addWindowListener(new WindowAdapter()
public void windowClosing(WindowEvent e)
System. exit(0);
);
add(cb, BorderLayout. NORTH);
cb. addhemListener(this);
PopupMenu popup=new PopupMenu("Button Control");
popup. add("item1");
popup. add("item2");
popup. addActionListener(this);
canvas=new CanvasWithPopup(popup);
add(canvas, BorderLayout, CENTER);
setSize(100,200);
show();
public void itemStateChanged(ItemEvent evt)
switch(evt. getState())
case ItemEvent. SELECTED;
canvas. addPopup();
break;
case ItemEvent. DESELECTED;
canvas. removePopup();
break;
public void actionPerformed(ActionEvent evt)(
System. out. printlnCgetActionCommand() +"is selected");
static public void main(String[]args)
new java3();
参考答案:笫1处:PopupMenu popup
第2处:switch (evt. getstateChange())
第3处:system. out. println (evt. getActioncommand()+"is selected")
解析: 第1处Java是大小写敏感的;第2处复选按钮状态更改事件为getstateChange;第3处getActioncommand()没有对应的ActionEvent。