![](/img/trans.png)
[英]How to add JComboBox(Object[] items) to jComboBox1.addItem(String items);
[英]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.