繁体   English   中英

获取JComboBox项目字符串表示形式

[英]Get JComboBox items string representation

我想获取JComboBox模型中包含的所有项目的String表示形式,该怎么做?

    ListModel model = combobox.getModel();   
    for(int i = 0; i < model.getSize(); i++) 
    {
        componentTexts.add( model.getElementAt( i ).toString() );
    }

这给了我与组合框项目不同的字符串-CellRenderer决定每个组合框项目的标签文本吗?

如果渲染的文本与Object的toString()不同,则需要直接调用渲染器。

该代码可能类似于:

ListCellRenderer renderer = comboBox.getRenderer();

Object child = comboBox.getAccessibleContext().getAccessibleChild(0);
BasicComboPopup popup = (BasicComboPopup)child;
JList list = popup.getList();

ListModel model = combobox.getModel();   
for(int i = 0; i < model.getSize(); i++) 
{
    Object value = model.getElementAt(i);
    JLabel label = (JLabel)renderer.getListCellRendererComponent(list, value, i, false, false);
    components.add( label.getText() );
}

基本上,您不能在所有情况下都这样做,因为CellRenderer不会返回String,而是可以返回它认为适合显示的任何JComponent,例如图标,图像,色块或更复杂的东西。

不过,您仍然可以尝试访问组合框的CellRenderer,并向cellRenderer询问每个组合框项目。 这将返回一个JComponent。 如果它是JLabel(可能经常是)​​,则使用getText()方法提取文本。 就像是:

if (component instance JLabel) {
    componentTexts.add ((JLabel) component).getText());
}

暂无
暂无

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

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