簡體   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