2014-02-13 2 views
0

У меня есть всплывающее меню, которое открывается при наведении курсора мыши на компонент. Теперь я хочу, чтобы можно было перетащить компонент, пока всплывающее окно все еще открыто, но событие закрытия всплывающего меню всегда потребляет первый щелчок мыши. Есть ли обходной путь для этого?Запуск перетаскивания мышью при открытии JPopupMenu?

ответ

0

Я отказался и использовал JDialog вместо JPopupMenu. Кажется невозможным получить событие click, которое закрывает всплывающее окно.

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) {} 
} 
Смежные вопросы