問題タブ [jxtreetable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JXTreeTable にデータが表示されない
ここに私のコードがあります
私の出力スクリーンショット:
java - Java Swing: SwingX の JXTreeTable 以外のツリー テーブル ウィジェット?
純粋な Swing JXTreeTable に相当するものを探します。
SwingX の JXTreeTable を使用したくない理由:
SwingX's JXTreeTable
Linux で Swing のGTK+
LookAndFeelを使用すると、クラッシュします。
次のメッセージでクラッシュします: "GThread-ERROR **: GThread system may only be initialized once.
aborting..."
(これは「キャッチ可能な」例外ではなく、JXTreeTable のインスタンス化でただちにクラッシュするだけです)
私の GUI は他の LookAndFeels とうまく動作し、JXTreeTable を追加する前と同様に、私の GUI は LookAndFeel とうまく動作したため、GTK+
SwingXの JXTreeTable 自体が GTK+/GLib を使用しているため、クラッシュが発生したと結論付けました。
誰でも私を助けることができますか?JXTreeTable に相当するウィジェットの純粋な Swing実装を持っている人はいますか?
java - JXTreeTableでフィルタ/検索フィールドを実装するには? グッドプラクティスとは?
いくつかの属性と子の ArrayList を持つクラス TreeNode があります。
このクラスには、AbstractTreeTableModel を拡張する独自の TreeModel があります。作成したツリーが正しく表示されます。
ここで、1 つの属性を検索し、1 つのノードと一致したときにすべての親とすべての子を表示する検索フィールドを追加したいと考えています。そのため、ツリーを上下にトラバースする必要があります。
SerachFactory を使用しようとしましたが、可視ノードのみを検索します。
例は、私にとって多くの、またはベストプラクティスに役立ちます。フィルターを適用できる 2 つ目のモデル (AbstractTreeTableModel を拡張する) が必要ですか? どうやってやるの?それともレンダラーを越える方法ですか?
java - フィルタリング後の JXTreeTable expandPath
フィルタリングできる JXTreeTable があります。キーワードをフィルターすると、新しいモデルが設定されます。それは私にとってはうまくいきます。
ここで、フィルタリングされたすべての結果を展開したいと思います。そのために、一致するノードが見つかった位置を保存します。(葉にはなりません。)
その位置について、次のメソッドを使用して TreePaths のリストを作成します。
ここで、このリストを繰り返し処理し、expandPath を呼び出します (新しいモデルが設定された後) getTreePaths() は、前のメソッドで作成した TreePaths のリストです。
しかし、それは効果がなく、ルートのみが展開され、すべての子が折りたたまれます。TreePath では、最後の要素は葉ではありません。このループの System.out では、すべて取得します。
-1 真 真 真
System.out.println(tree.getRowForPath(elem)); System.out.println(f.isPathValid(elem,tree.getTreeTableModel())); System.out.println(tree.isVisible(elem)); System.out.println(tree.isExpanded(elem));
getRowForPath の -1 が問題なのでしょうか?
isPathValid():
java - JXTreeTable と BorderHighlighter がすべての行に境界線を描画する
JXTreeTable で BorderHighlighter を使用して、リーフ以外の行の各テーブル セルの上に境界線を配置し、ユーザーに視覚的な区切りをより明確にしています。
問題は、階層列を展開すると、階層列のすべてのセルのすべての行に、蛍光ペンの境界線が含まれることです。他の列は問題なく表示されています。
私の BorderHighlighter は次のように定義されています。
SwingX 1.6.5 を使用しています。
折りたたむと、上部の BorderHighlighter が正しく表示されます。
展開すると、非階層列には BorderHighlighter が正しく表示されますが、階層列は表示されません。
swing - JXTreeTable の TreeTableRender
JXTreeTable の異なる列に異なるレンダラーを割り当てるにはどうすればよいですか。JXtreeTable には、さまざまな列タイプ (通貨、日付など) があります。JXTable では、getColumn(identifier).setCellRender(TableCellRender) メソッドを使用しました。JXTreeTable はどうすればよいですか?
java - 新しいノードを追加するとJXTreeTableがスクロールしますか?
追加ボタンのある JXTreeTable があります。ボタンは期待どおりに機能します。新しいノードが最後に追加され、(テスト目的で) プログラムにハードコードされた値が追加されます。この線:
TreeTableModel に加えられた更新を認識し、それに応じて更新するように JXTreeTable に指示します。
次に実行します。
この新しいノードを自動的に選択します。これは期待どおりに機能しますが、自動的にスクロールしてこの新しいノードが見えるようになることも期待していましたが、そうではありません。代わりに、最後から 2 番目のノードのみを表示するようにスクロールし、新しいノードはビューの外にわずかに隠れたままにします。
また、トリックを使用して、プログラムで最終レコードまでスクロールしようとしました。ただし、このコード:
同じ問題を明らかにしました。
奇妙なことに、上記の 2 つのコード ブロックのいずれかを「下にスクロール」ボタンに接続し、新しいノードを追加した後にこのボタンを手動で押すと、すべて正常に動作します。このバグの原因を特定したり、修正/回避策を提供したりできる人はいますか?