当前位置: 首页 > 知识库问答 >
问题:

下拉列表中具有两列let但只有一个选定值的jcomboBox

宋凌龙
2023-03-14
class ComboItem {
int id;
String name;

ComboItem(int id, String name) {
    this.id = id;
    this.name = name;
}

public String toString() {
    return Integer.toString(this.id) + "-" + this.name;
}

public int getItem() {
    return this.id;
}
}

我创建了一个JComboBox,其中填充了具有两个变量的项目:id和name(如上所示的代码)。我覆盖了toString函数,以便组合框显示两个字段之间的-。我想做的是当用户从下拉列表中选择某些内容时只显示id。我希望用户在单击箭头时能够同时看到id和名称,但我希望组合框在用户做出选择后只显示id。我该怎么做?谢谢。

共有3个答案

闻深
2023-03-14

你需要做两件事:

  1. 创建自定义渲染器
  2. 实现键选择管理器(因为自定义呈现器将破坏组合框的默认功能。

有关详细信息,请参阅带有自定义渲染器的组合框,以及为您完成上述两项操作的解决方案。

您将需要自定义渲染器实现(除了上面链接中给出的建议)。所选值的索引将为-1。因此,您需要渲染器中的代码来显示所选值与下拉列表中的值。类似:

if (index == -1)
    //  display the id
else
    //  display the id and name
淳于鹏
2023-03-14

您应该实现自己的ListCellRenderer。请参见JComboBox#setRenderer方法。

例如:

JComboBox<ComboItem> comboBox = new JComboBox<>(new ComboItem[]{new ComboItem(1, "test")});
    comboBox.setRenderer(new ListCellRenderer<ComboItem>() {
        @Override
        public Component getListCellRendererComponent(JList<? extends ComboItem> list, ComboItem value, int index, boolean isSelected, boolean cellHasFocus) {
            return new Label(Integer.toString(value.getItem()));
        }
    });
夔庆
2023-03-14

听起来像是定制渲染器的工作:http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html#renderer

 类似资料:
  • 我是一个全新的领域,我现在有两个独立的下拉菜单。我正在尝试使用户能够在同一时间只能从两者中的一个进行选择。例如,如果用户从中选择某项内容,然后从中选择另一项内容,则变为未选中。 下面是我在html部分中的片段 这里是JS 这是一个简单的演示。你可以注意到你可以同时选择一辆汽车和一辆卡车。此时应仅为汽车或卡车:https://jsfidle.net/j82ryu5k/2/

  • 我的谷歌表单使用了用户马克斯·马克洛夫(Max Makhrov)编写的代码,这里的代码,在D-F列(用于位置)和H-L列(用于目标)中创建多个相关的动态下拉列表 我想帮助修改脚本以完成两件事: 无论从第一列的下拉菜单中选择了什么活动,我都希望J-L列可以使用相同的下拉菜单选项(重复)。正如您所看到的,我找到了一种方法,但对我来说,它似乎笨重且不理想,并且为错误留下了太多的空间。用户不应该选择活动两

  • 在我的剑道网格中,我为每一列都有kenddropDownlist。选定的项目应解析并显示模板文本 我一直在遵循这个例子http://jsfiddle.net/jddevight/Ms3nn/ 使现代化 我在这里简化了我的问题http://jsfiddle.net/BlowMan/mf434/ 问题 当我在下拉列表中选择一个项目时,它不会返回所选项目的值。它返回null。 }); 下面的视图部分 任

  • 我的问题是无法得到下拉列表选择的值,错误是: 字段“admin”上对象“agence”中的字段错误:拒绝值[1];代码[TypeMismatch.agence.admin,TypeMismatch.admin,TypeMismatch.com.example.demo.Entities.AdminStrateur,TypeMismatch];;默认消息[无法将“java.lang.String”类

  • 我正在使用Bootstrap 3和JavaScript创建我自己的ComboBox。 这种方法非常有效,直到我想在页面上重复多次这个“组合框”。问题在于JQuery函数查找任何/所有。 如何将JQuery更改为仅查找ID为demolist的UL并获取其选定值? 我尝试了以下方法,但没有成功: 我尝试了,但不会触发函数: 我尝试调用#demolist的单击,但获取#demolist的所有列表项的HT

  • 我有一个下拉列表,客户端必须选择一个值,然后它将在mysql db中持久化好的,我这样做了,但我希望当客户端选择一个值时,我得到该值,然后我执行if语句示例: 如果选择的值为:CIN,则为compte。setcomptenumber(25364138);就像那样 这是我的控制器: 我的html: