繁体   English   中英

2列jcombobox

[英]2 column jcombobox

我在多列jcombobox上有很多用途,但是还没有找到任何用自己的东西。 我尝试了Web中发现的几种方法,但是它们没有用。 之后,我在某处读到那些(旧的)在当前Java版本下不起作用。

到目前为止,我已经设法做出自己的决定,使组合框具有一个表格作为下拉列表,并且可以使用鼠标选择一个项目,但是目标是当用户开始在编辑框中键入内容时,下拉列表会打开并显示光标根据用户编写的文本移动。 似乎来自JTextField editor = (JTextField) comboBox.getEditor().getEditorComponent()不起作用。

有没有人设法制作两列组合框或有任何想法,当用户开始键入内容时如何获取事件。

您正在寻找自动完成功能(据我所知,这个问题): SwingX支持该功能,并且非常易于使用。

归结为象征一个自定义ObjectToStringConverter,并使用该转换器使用autoCompleteDecorator配置comboBox。 就像是:

/**
 *  A converter which expects an item of an array type and returns
 *  a string representation of its first value. 
 */
public static class ArrayToStringConverter extends ObjectToStringConverter {

    @Override
    public String getPreferredStringForItem(Object item) {
        if (!(item instanceof Object[])) return DEFAULT_IMPLEMENTATION.getPreferredStringForItem(item);
        Object[] array = (Object[]) item;
        return DEFAULT_IMPLEMENTATION.getPreferredStringForItem(array[0]);
    }

}

// usage
// assuming an model with items being arrays 
JComboBox combo = new JComboBox(arrayModel);
// the renderer supporting multiple columns, f.i. a table
combo.setCellRenderer(new TabularListRenderer());
AutoCompleteDecorator.decorate(combo, new ArrayToStringConverter());

在我的孵化器部分中的TableAsListRenderer是一个完整的工作示例(包括渲染器,并显示了如何强制弹出的宽度大于组合本身)。

顺便说一句:自动完成功能是一个独立的模块,可以通过maven进行访问,也可以从java.netmaven代表手动下载,您可能需要swingx-autocomplete-1.6.4.jar(如果感兴趣的话,还要加上相应的文档/源代码)

有没有人设法制作两列组合框或有任何想法,当用户开始键入内容时如何获取事件。

您可以将JTable放入JComboBox ,但是默认情况下,您只能从整个JTables行中选择值,而不是直接从JTables Cell选择值(需要其他解决方法,尚未尝试)

我也还在寻找这个答案

这是我到目前为止尝试的..我创建了Jpopup并将Jtable放在其中。.然后我使用jlabel而不是jcombobox,当用户单击jlabel时,popup(Jtable)将显示在该jlabel位置..当用户在jtable上选择值时,然后将弹出窗口处理,然后jlabel将显示结果。

对于您的情况,可以使用jtextfield而不是jlabel

编辑:这是相关问题,请在此处输入链接描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM