[英]Using JComboBox with custom renderer as JTable cell renderer/editor (architecture)
[英]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的編輯器中繪制。 我上傳了一張圖片,以更好地顯示這一點。
有沒有辦法將“編輯器”與“列表”分開?
據我了解,您正在為JComboBox
實現自定義Renderer,盡管它正確地呈現了下拉菜單的內容,但它完全弄亂了組合框的當前值。
我認為有兩種選擇可供您使用:
您可以擴展JComboBox
的UI組件,並重寫paint
方法以獲得當前值視圖的網格自定義表示。 這將是一個非常快速的概念證明,但由於您需要擴展希望與應用程序一起運行的每個UI(金屬,窗口,mac等),因此會帶來一些問題。
您可以滾動自己的下拉菜單,並使它看起來像JComboBox
。 作為POC並沒有那么困難,但是這里的復雜度是處理影響組合框選擇和導航的不同鍵盤輸入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.