问答题
本题程序的功能是用复选框来控制鼠标右键的弹出菜单是否弹出。窗口中有一个复选框“弹出菜单”,勾选该复选框后,鼠标置于窗口上,右击会弹出一个菜单,单击菜单中的命令后,后台会输出所单击的菜单项。如果取消勾选该复选框,右击就不能弹出菜单。请将下述程序补充完整(注意:不得改动程序的结构,不得增行或删行)。
import java.awt.*;
import java.awt.event.*;
class CanvasWithPopup extends Canvas
______;
CanvasWithPopup(PopupMenu popup)
enableEvents(AWTEvent.MOUSE EVENT MASK);
this.popup = popup;
void addPopup()
add(popup);
void removePopup()
remove(popup);
protected void processMouseEvent(MouseEvent evt)
if (popup.getParent() ! = null && evt.isPopupTrigger())
popup.show(evt.getComponent(),evt.getX(),evt.getY());
super.processMouseEvent(evt);
public class advance extends Frame implements ItemListener,ActionListener
Checkbox cb = new Checkbox("弹出菜单",false);
CanvasWithPopup canvas;
advance()
super("advance");
addWindowListener(new WindowAdapter()
public void windowClosing(WindowEvent e)
System.exit(0);
);
add(cb,BorderLayout.NORTH);
cb.addItemListener(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)
______
case ItemEvent.SELECTED:
canvas.addPopup(); break;
case ItemEvent.DESELECTED:
canvas.removePopup(); break;
public void actionPerformed(ActionEvent evt)
______;
static public void main(String[] args)
new advance ();
【参考答案】
PopupMenu popup。
switch(evt.getStateChange())。
Sys......
(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)