0

作为一个 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,我ZGridJCombobox. 问题是,在它的列表中,这个 ZGrid 正在正确绘制。但它也在 JCombobox 的编辑器中绘制。我上传了一张图片来更好地展示这一点。

有没有办法将编辑器与列表分开?


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

4

1 回答 1

1

据我了解,您正在为您JComboBox的 .

我看到您可以使用两种选择:

  1. 您可以为您扩展 UI 组件JComboBox并覆盖该paint方法以获取当前值视图的网格的自定义表示。这将是一个非常快速的概念证明,但它会带来一些问题,因为您需要扩展您希望应用程序运行的每个 UI(金属、Windows、Mac 等)。

  2. 你可以滚动你自己的下拉菜单,让它看起来像一个JComboBox. 这作为 POC 也不会那么困难,但这里的复杂性在于处理影响组合框周围的选择和导航的不同键盘输入。

于 2010-02-15T16:32:51.207 回答