2008년 7월 20일 일요일

java JPopupMenu Example

메뉴아이템에 팝업창 띄우기




import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
class MenuPopup_test extends JFrame implements MouseListener
{
JMenu file = new JMenu("파일");
JMenuItem test1 = new JMenuItem("속성1"); // 제거될 가능성이 있는 컴포넌트
JMenuItem test2 = new JMenuItem("속성2"); // 제거될 가능성이 있는 컴포넌트
JPopupMenu pop = new JPopupMenu();
JMenuItem del = new JMenuItem("삭제");
JMenuItem temp;
public MenuPopup_test(){

this.setVisible(true);
this.setSize(500,300);
// 메뉴설정
JMenuBar jmb = new JMenuBar();
this.setJMenuBar(jmb);
jmb.add(file);
file.add(test1);
file.add(test2);
//팝업설정
pop.add(del);

test1.addMouseListener(this);
test2.addMouseListener(this);
del.addMouseListener(this);
}

public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e) {}

public void mousePressed(MouseEvent e){
if(e.getSource()==del){
file.remove(temp);
}
}
public void mouseReleased(MouseEvent e){

if(e.getSource()==test1 e.getSource()==test2){
//메뉴마우스좌표+메뉴좌표+창테두리값
popUpShow(e.getX()+e.getComponent().getX()+5, e.getY()+e.getComponent().getY()+30+20);
//삭제메뉴
temp=(JMenuItem) e.getComponent();

}
}

private void popUpShow(int x, int y) {
// TODO Auto-generated method stub
pop.show(this, x, y);
}

public static void main(String[] args)
{
new MenuPopup_test();
}
}

문]
JMenuItem 에서 마우스가 released 즉 떼어지면....
바로 그 포인트장소에 팝업창을 뛰운후 팝업창메뉴의 삭제를 누르면... JMenuItem 이 JMenu에서 아예 제거되도록 하려고 합니다.
문제는 mouseReleased 이벤트함수에서 팝업창을 띄울때 팝업,show(component, x, y) 인데요
component 를 어떻게 줘야할지 모르겠습니다..

댓글 없음:

댓글 쓰기

-


Sidewinder


World


FishMusic


LaughingBaby