java swing,jincobox popup中的highligth项目

时间:2010-11-18 22:50:42

标签: java swing jcombobox

我想在弹出列表中突出显示一个项目。

我说“突出显示”因为我不想选择它(例如通过调用setSelectedItem)但只在jcombobox弹出窗口中选中它。

我该怎么办?

2 个答案:

答案 0 :(得分:2)

以下类型的工作原理是选择除第一项以外的项目。但是,如果您使用键盘更改选择,它始终从第一个开始,因为这是所选的。

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 );
    }

}

答案 1 :(得分:0)

这篇文章提供了有关如何修改JComboBox的指导:

虽然它是为自动完成功能而编写的,但是一个不加选择的高亮显示的自定义机制将非常相似(并且可能更容易)。