代码之家  ›  专栏  ›  技术社区  ›  Erkan Haspulat

JCombobox,编辑器和渲染器相关

  •  0
  • Erkan Haspulat  · 技术社区  · 16 年前

    作为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,它有 兹格里德 JCombobox . 问题是,在它的列表中,这个ZGrid画得很好。但它也在JCombobox的编辑内部绘制。我上传了一张图片来更好地展示这一点。

    有办法把编辑和列表分开吗?


    alt text http://img444.imageshack.us/img444/564/soex.jpg

    1 回复  |  直到 16 年前
        1
  •  1
  •   akf    16 年前

    据我所知,您正在为 JComboBox

    我看到你有两个选择:

    1. 下拉框 并覆盖 paint 方法获取当前值视图的网格的自定义表示。这将是一个很快的概念证明,但它提出了问题,因为你需要扩展每个用户界面(金属,windows,mac等),你希望你的应用运行。

    2. 下拉框 . 作为POC也不难做到这一点,但这里的复杂性在于处理不同的键盘输入,这些输入会影响组合框周围的选择和导航。

    推荐文章