![](/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.