Java Swing : Mouseover text on JComboBox items?

标签 java swing

在 Swing 中,有没有办法为 JComboBox 中的每个项目定义鼠标悬停文本(或工具提示文本)?

最佳答案

有比已经给出的 ToolTipComboBox 答案更好的方法。

首先,制作一个自定义的ListCellRenderer:

package com.example;

import javax.swing.*;
import java.awt.*;
import java.util.List;

public class ComboboxToolTipRenderer extends DefaultListCellRenderer {
    List<String> tooltips;

    @Override
    public Component getListCellRendererComponent(JList list, Object value,
                        int index, boolean isSelected, boolean cellHasFocus) {

        JComponent comp = (JComponent) super.getListCellRendererComponent(list,
                value, index, isSelected, cellHasFocus);

        if (-1 < index && null != value && null != tooltips) {
            list.setToolTipText(tooltips.get(index));
        }
        return comp;
    }

    public void setTooltips(List<String> tooltips) {
        this.tooltips = tooltips;
    }
}

然后像这样使用它:

JComboBox comboBox = new JComboBox();
ComboboxToolTipRenderer renderer = new ComboboxToolTipRenderer();
comboBox.setRenderer(renderer);
...
//make a loop as needed
comboBox.addItem(itemString);
tooltips.add(tooltipString);
...
renderer.setTooltips(tooltips);

关于Java Swing : Mouseover text on JComboBox items?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/480261/

相关文章:

java - 使用 map fragment Activity

java - 在android应用程序中获取当前时区

java - 如何在按下/单击窗口标题栏时得到通知

java - 如何在允许编辑 JTable 中的给定行之前进行检查

java - e.getActionCommand() 不起作用?

c# - Java 到 C# 转换器

java - 将 Arraylist 保存到文本文档中的单独行

java - SQL 查询中列名称前面的值是什么?

java - JFrame 的图标路径

java - JInternalFrame 置于前面并聚焦