[ java ] in KIDS 글 쓴 이(By): crystal (쑤쑤) 날 짜 (Date): 1997년12월23일(화) 02시06분51초 ROK 제 목(Title): Re: [질문] Popup Menu가 안되요.... Nutshell edition 2를 가지고 있지 않아 정확히는 모르겠지만 그 코드에서 만약 mouse listener 를 써서 isPopupTrigger()를 부르고 있다면 문제는 자바가 가지고있는 bug 에 있습니다. JDK 1.1 나왔을때부터 발견된 bug 인데 1.1.5 까지도 않고쳐진 bug 이죠.. (1.2 에서 고쳐졌다는 기록을 찾아볼수도 없군요.) 다행인것은 비교적 간단한 치료법(?) 이 있다는점이죠. mouse listener 를 쓰지 않고 대신 enableEvents 와 processMouseEvents 를 override 하는 방법이 있습니다. 밑에 간단한 코드가 있으니 참고하시죠. [Java Developers' Connection 에서 퍼왔습니다] import java.awt.*; import java.applet.*; import java.awt.event.*; public class PopupMenuTest extends Applet implements ActionListener { PopupMenu popup; public void init() { MenuItem mi; popup = new PopupMenu("Edit"); mi = new MenuItem("Cut"); mi.addActionListener(this); popup.add(mi); mi = new MenuItem("Copy"); mi.addActionListener(this); popup.add(mi); popup.addSeparator(); mi = new MenuItem("Paste"); mi.addActionListener(this); popup.add(mi); add(popup); // add popup menu to applet enableEvents(AWTEvent.MOUSE_EVENT_MASK); resize(200, 200); } public void processMouseEvent(MouseEvent e) { if (e.isPopupTrigger()) { popup.show(e.getComponent(), e.getX(), e.getY()); } super.processMouseEvent(e); } public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); if (command.equals("Cut")) { // perform cut operation } else if (command.equals("Copy")) { // perform copy operation } else if (command.equals("Paste")) { // perform paste operation } } } |