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を持つ JPanel を に提供します。問題は、そのリストで、この ZGrid が適切に描画されていることです。しかし、JCombobox のエディター内でも描画されています。これをよりよく示すために画像をアップロードしました。ZGridJCombobox

Editor を List から分離する方法はありますか?


代替テキスト http://img444.imageshack.us/img444/564/soex.jpg

4

1 に答える 1

1

私が理解していることから、あなたはあなたのためにカスタムレンダラーを実装していますJComboBox、そしてそれはあなたのドロップダウンの内容を正しくレンダリングしますが、それはコンボボックスの現在の値を完全に台無しにします。

私はあなたの処分で2つのオプションを見ます:

  1. のUIコンポーネントを拡張しJComboBox、メソッドをオーバーライドしてpaint、現在の値ビューのグリッドのカスタム表現を取得できます。これは概念実証としてはかなり簡単ですが、アプリの実行に必要なすべてのUI(メタル、ウィンドウ、Macなど)を拡張する必要があるため、問題が発生します。

  2. 独自のドロップダウンをロールして、のように見せることができますJComboBox。これはPOCとしてもそれほど難しいことではありませんが、ここでの複雑さは、コンボボックスの周りの選択とナビゲーションに影響を与えるさまざまなキーボード入力を処理することです。

于 2010-02-15T16:32:51.207 に答える