2014-02-13 31 views
0

我有一個彈出式菜單,在鼠標懸停在組件上時打開。現在我想要在彈出窗口仍然打開的情況下開始拖動組件,但彈出菜單關閉事件總是消耗第一次鼠標點擊。有沒有解決方法?當JPopupMenu打開時開始鼠標拖動?

回答

0

我放棄了,並使用JDialog而不是JPopupMenu。看起來不可能得到關閉彈出窗口的點擊事件。

1
 public class A 
    ..... 
    implements MouseListener, ActionListener 
     { 
    JPopupMenu pmnu ; 
    JMenuItem setcol ; 

    JList lst ; 
    Component cmp = null ; 
int x = 0, y = 0; 
    ... 
private void 
pop (MouseEvent ev) 
{ 
if (ev.isPopupTrigger() ) 
{ 
cmp = ev.getComponent() ; 
x = ev.getX() ; 
y = ev.getY() ; 
pmnu.show (cmp, x, y) ; 
} 
} 
public void mouseDragged(MouseEvent ev) 
{ 
pop (ev) ; 
} 
public void mouseReleased (MouseEvent ev) 
{ 
pop (ev) ; 
} 
public void  actionPerformed(ActionEvent ev) 
{ 
Object src = ev.getSource() ; 

if (src == setcol && cmp != null) 
{ 
cmp.setBackground (Color.yellow) ; 
return ; 
} 
} 
public A() 
{ 
pmnu = new JPopupMenu() ; 

setcol = new JMenuItem ("Set color") ; 

pmnu.add (setcol) ; 
.... 
} 

public void 
init() 
{ 
setcol.addActionListener (this) ; 
.... 
lst.addMouseListener (this) ; 
} 
public void mouseClicked(MouseEvent ev) {} 
public void mouseEntered(MouseEvent ev) {} 
public void mouseExited(MouseEvent ev) {} 
}