2011-12-14 6 views
5

У меня есть JComboBox (среди других компонентов) внутри JPopupMenu. Оказывается, всякий раз, когда я открываю всплывающее окно со списком (для выбора элемента), родительский JPopupMenu закрывается. Я пытался найти способ переопределить эту функцию, но безрезультатно.JPopupMenu закрывается, когда открывается всплывающее окно пользователя

Есть ли у кого-нибудь предложения по предотвращению закрытия родительского JPopupMenu? Благодаря!

ответ

4

, что не представляется возможными непосредственно, его очень трудно отвергнуть известный bug, в других руках свинг не позволяет два lightwieght компоненты всплывающих в том же время

import javax.swing.*; 
import java.awt.event.*; 

public class Test { 

    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     frame.setSize(400, 400); 
     frame.setVisible(true); 
     String[] list = {"1", "2", "3", "4",}; 
     JComboBox comb = new JComboBox(list); 
     final JPopupMenu pop = new JPopupMenu(); 
     pop.add(comb); 
     frame.addMouseListener(new MouseAdapter() { 

      @Override 
      public void mousePressed(MouseEvent e) { 
       System.out.println("mousePressed"); 
       pop.show(e.getComponent(), e.getX(), e.getY()); 
      } 
     }); 
    } 
} 

но обходной путь очень простое использование JWindows или снимите декорированное JDialog с JComboBox вместо JPopup

+0

К сожалению, я думаю, что вы правы. Мне нужно найти другой подходящий компонент для использования (кроме JComboBox). – Sam

+0

hmmm Вы слышали, что вы автозавершали JTextField http://stackoverflow.com/a/7255918/714968 – mKorbel

 Смежные вопросы

  • Нет связанных вопросов^_^