2016-08-02 12 views
1

私はJComboboxをドロップダウンリストから選択すると、選択した項目が開きます開いているがドロップダウンリストが閉じていないカスタムをクリックするとドロップダウンを非表示にしたいここで私のサンプルコードです....カスタムをクリックするとJComboboxのドロップダウンリストを閉じる方法は?

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

については

([SSCCE](http://sscce.org))。私はコードをコンパイルすることすらできません。 –

答えて

1

SwingUtilities.invokeLaterを使用できます。あなたが短い実行可能な例を提供するために必要な助けを得るために、実施例

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

ありがとうございます... – srinivas

0

combobox.getUI()。setPopupVisible(combobox、false);

関連する問題