2016-08-02 23 views
1

Ich habe eine JCombobox, in der, wenn ich eine aus der Dropdown-Liste von JCombobox auswähle, das ausgewählte Element geöffnet wird, aber wenn ich auf "Benutzerdefiniert" unter einer der Dropdown-Liste klicke, muss ich eine Daiolg öffnen, daiolg ist Öffnen, aber Dropdown-Liste schließt nicht Ich möchte das Dropdown-Menü ausblenden, wenn ich auf Benutzerdefiniert klicke. hier ist mein Beispielcode ....Wie schließe ich die Drop-Down-Liste von JCombobox, wenn wir auf Custom klicken?

private PropertyChangeSupport pcs;///here Iam using ActionListener and PopupMenuListener 
public void actionPerformed(ActionEvent ae){ 
if(ae.getSource() instanceof ComboBox) 
{ 
ComboBox comboBox = (ComboBox)ae.getSource(); 
Object selectedItem = comboBox.getSelectedItem(); 
if(selectedItem != null && (!selectedItem.equals("(Custom..)"))) 
{ 
pcs.firePropertyChange("ITEM_SELECTED",getCaption(),null); 
}}} 
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) 
{ 
ComboBox comboBox = (ComboBox)e.getSource(); 
Object repeatedSelectedItem = comboBox.getSelectedItem(); 
if(repeatedSelectedItem != null && repeatedSelectedItem.equals("(Custom..)")) 
{ 
invokeCustomFilterDialog(repeatedSelectedItem, comboBox); 
}} 
private void invokeCustomFilterDialog(Object repeatedSelectedItem, ComboBox comboBox) 
{ 
customFilterDialog.showDialog(); //here Iam opening dailog... 
if(customFilterDialog.isCustomFilterAppliedFlag() == true) 
{     
pcs.firePropertyChange("ITEM_SELECTED",getCaption(),null); 
} 
else 
{comboBox.setSelectedItem(lastSelectedItem);}} 
public void popupMenuCanceled(PopupMenuEvent e) 
{ } 
public void popupMenuWillBecomeVisible(PopupMenuEvent e) 
{ 
ComboBox comboBox = (ComboBox)e.getSource(); 
this.lastSelectedItem = comboBox.getSelectedItem(); 
} 
+3

Um Hilfe erhalten Sie benötigen ein kurzes runnable Beispiel liefern ([SSCCE] (http://sscce.org)). Ich kann den Code, den du gepostet hast, nicht einmal kompilieren. –

Antwort

1

Sie können SwingUtilities.invokeLater verwenden.

Zum Beispiel

public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { 
     final JComboBox comboBox = (JComboBox) e.getSource(); 
     final Object repeatedSelectedItem = comboBox.getSelectedItem(); 
     if (repeatedSelectedItem != null 
       && repeatedSelectedItem.equals("(Custom..)")) { 
      SwingUtilities.invokeLater(new Runnable() { 
        public void run() { 
         invokeCustomFilterDialog(repeatedSelectedItem, comboBox); 
        } 
      }); 

     } 
    } 
+0

Danke ... Es hat funktioniert – srinivas

0

combobox.getUI() setPopupVisible (combobox, false).