簡體   English   中英

JCombobox,編輯器和渲染器相關

[英]JCombobox, Editor and Renderer related

作為JCombobox ListCellRenderer,我有一個像這樣的類:

class ZComboBoxRenderer extends JPanel implements ListCellRenderer{
private ZGrid grid;
public ZComboBoxRenderer(ZGrid grid) {
    setLayout(new BorderLayout());
    this.grid = grid;
    add(new JScrollPane(grid), BorderLayout.CENTER);
}
public ZGrid getGrid(){
    return grid;
}
@Override
public Component getListCellRendererComponent(JList list, Object value,
        int index, boolean isSelected, boolean cellHasFocus) {
    grid.fetchSQL();
    return this;
}
}

ZGrid在這里擴展了JTable

作為ListCellRendererComponent ,我提供一個JPanel具有ZGrid內,到JCombobox 問題是,在其列表中,此ZGrid正確繪制。 但是它也在JCombobox的編輯器中繪制。 我上傳了一張圖片,以更好地顯示這一點。

有沒有辦法將“編輯器”與“列表”分開?


替代文字http://img444.imageshack.us/img444/564/soex.jpg

據我了解,您正在為JComboBox實現自定義Renderer,盡管它正確地呈現了下拉菜單的內容,但它完全弄亂了組合框的當前值。

我認為有兩種選擇可供您使用:

  1. 您可以擴展JComboBox的UI組件,並重寫paint方法以獲得當前值視圖的網格自定義表示。 這將是一個非常快速的概念證明,但由於您需要擴展希望與應用程序一起運行的每個UI(金屬,窗口,mac等),因此會帶來一些問題。

  2. 您可以滾動自己的下拉菜單,並使它看起來像JComboBox 作為POC並沒有那么困難,但是這里的復雜度是處理影響組合框選擇和導航的不同鍵盤輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM