2010-11-18 9 views
1

ポップアップリスト内の項目をハイライトしたい。jcomboboxポップアップのjava swing、highligthアイテム

私は "setSelectedItem"を呼び出すなどして選択したくないので "強調表示"と言っていますが、jcomboboxポップアップで選択するだけです。

どうすればいいですか?

答えて

1

最初の項目以外の項目が選択されているという点で、次のような動作があります。ただし、キーボードを使用して選択を変更すると、選択されたものが常に最初のものから開始されます。

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

public class ComboBoxSelect extends JFrame 
{ 
    public ComboBoxSelect() 
    { 
     String[] items = { "Item1", "Item2", "Item3", "Item4", "Item5" }; 
     JComboBox comboBox = new JComboBox(items); 
     add(comboBox); 

     comboBox.addPopupMenuListener(new PopupMenuListener() 
     { 
      public void popupMenuWillBecomeVisible(PopupMenuEvent e) 
      { 
       JComboBox comboBox = (JComboBox)e.getSource(); 
       BasicComboPopup popup = (BasicComboPopup)comboBox.getAccessibleContext().getAccessibleChild(0); 
       JList list = popup.getList(); 
       list.setSelectedIndex(2); 
      } 

      public void popupMenuCanceled(PopupMenuEvent e) {} 
      public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {} 

     }); 
    } 

    public static void main(String[] args) 
    { 
     ComboBoxSelect frame = new ComboBoxSelect(); 
     frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 

}

+0

これは完璧です!ありがとうございました!! – blow

0

この書き込みアップは、あなたがするJComboBoxを変更することができる方法に関するガイダンスを提供しています。それはオートコンプリート機能のために書かれていますが

は、カスタムのメカニズムは非常に類似して選択せずにハイライト表示します(そしておそらくより簡単です)。

+0

ポップアップの項目をhighligthためにこの溶液を使用setSelectedItem。 – blow

関連する問題