0
我有一個彈出式菜單,在鼠標懸停在組件上時打開。現在我想要在彈出窗口仍然打開的情況下開始拖動組件,但彈出菜單關閉事件總是消耗第一次鼠標點擊。有沒有解決方法?當JPopupMenu打開時開始鼠標拖動?
我有一個彈出式菜單,在鼠標懸停在組件上時打開。現在我想要在彈出窗口仍然打開的情況下開始拖動組件,但彈出菜單關閉事件總是消耗第一次鼠標點擊。有沒有解決方法?當JPopupMenu打開時開始鼠標拖動?
我放棄了,並使用JDialog而不是JPopupMenu。看起來不可能得到關閉彈出窗口的點擊事件。
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) {}
}