1

非表示のルートの下に 2 つのレベルしかない JXTreeTable を作成しているので、トップ レベルのノードを区切る境界線が必要です。ただし、BorderHighlighter を使用すると、階層列が正しく描画されません。

テーブルの上にマウスを移動するだけで、最終的に列全体が黒くなるまで、階層セルに境界線が継続的に追加されます。

[InformIT] を含む多くのサイトから JXTableTree サンプル コードを使用して小さな例を作成し、コードをコピーして貼り付けて作成しました。2

この例では、蛍光ペン コードを main() メソッドに追加しました。

Highlighter topHighlighter = new BorderHighlighter(new HighlightPredicate() {
    @Override
    public boolean isHighlighted(Component renderer, ComponentAdapter adapter) {
        return true;
    }
}, BorderFactory.createMatteBorder(1, 0, 0, 0, Color.BLACK));
treeTable.addHighlighter(topHighlighter);

最新の SwingXバージョン 1.6.4と思われるものを試してみました。

4

1 に答える 1

0

最終更新

この問題はリビジョン #4239 で修正されているため、次のリリースで利用できるようになります (または現在のコード ベースを確認してください)。

オリジナル

SwingLabs デモ アプリケーションで見られるのと同じ効果がある場合、これはバグです (既に問題があるかどうかはわかりません) 。

  • 左側のタスクでハイライターのデモを選択します
  • 右側のデモで JXTreeTable タブを選択します
  • ハイライターコンボでBorderHighlighterを選択します
  • 述語コンボで Always On を選択します

根本的な理由は、階層列が 1 つのツリーの切り取られた領域を表示することによってレンダリングされるためです。そのため、ハイライターはツリー全体に適用され、一部は境界線のように厄介な効果があります。

現時点では、そのようなハイライターを使用しないことが唯一の解決策です。満足のいく解決策があるかどうか、完全にはわかりません。

アップデート

SwingX トラッカーに問題を提出したので、忘れないようにします。

于 2012-09-08T06:10:21.990 に答える