問題タブ [jtree]
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 - 実行時の JTree のリロード
GUI クラスとは別のクラスで、JTree とそのモデルを作成します。JTree のデータはファイルから抽出されます。
GUI クラスで、ユーザーはファイル システムから AWT リストにファイルを追加できるようになりました。ユーザーがリスト内のファイルをクリックした後、JTree を更新します。JTree の変数名は schemaTree です。
リスト内の項目が選択されたときの次のコードがあります。
受け入れられた回答に対応するようにコードを更新しました。リストで選択したファイルに基づいて、JTree が正しく更新されるようになりました。
java - JTree でノードを非表示/フィルタリングしていますか?
で表されたデータ オブジェクトがあり、TreeModel
その一部だけを表示したいと思いJTree
ます -- 議論のために、葉とその親を言います。不要なノードを非表示/フィルタリングするにはどうすればよいですか?
java - ノードオブジェクトの状態が変化したときに JTree ビューを動的に変更する方法は?
Java JTree パネルを実装しています。このパネルには、ツリー状の一連のデータ構造 (コンポジットのリストのリスト - 異なるクラス) から構築された TreeModel が保持されます。これらのデータ構造は、定義した一連のインターフェイスに基づいて、外部の jar 実装から取得します。
ツリーノードには、チェックされたノードとすべての子ノードが「アクティブ」になること、つまり、ノードによって表されるオブジェクトがデータベースからデータを取得するなど、何かを行う必要があることを示すために、ユーザーがチェックできるチェックボックスが含まれています。
ツリーノードは、それらを「アクティブ化」せずに、つまりチェックボックスをオンにせずに選択することもできます。
それに加えて、プログラムの他の部分もデータモデル オブジェクトのアクティブ化状態を切り替える場合があります。したがって、ツリーモデルが構築されるデータ モデルは、アクティブ化状態のソースです。これは、チェックボックスを動的に (チェックを外して) ツリービューに反映する必要があります。
さて、この全体をどのように実装しますか?誰がどのような変更を聞く必要がありますか?
これで、ノード内のすべてのクラスが、アクティベーション フィールドを保持する抽象クラスから拡張されました。これが真のデータソースです。このフィールドが変更されると、サブスクライブしているすべてのリスナー (EventListener) に通知する必要があります。これには、チェックボックスが含まれます。
デフォルトの TreeSelectionModel に基づいているが、子/親をチェックする必要があるかどうかをチェックする機能で拡張された TreeSelectionModel もあります。
私の質問はあまり明確ではないかもしれませんが、この複雑なコードもそうです。お役に立てれば幸いです。
java - Swing:JTextPanesをノードとしてJTreeを使用するにはどうすればよいですか?
JTree
DefaultTreeCellRenderer
セルレンダラーとして使用します。
このクラスはのサブクラスですJLabel
。
など
JTree
よりも複雑な要素で使用したい。JLabel
JTextPane
問題は次のとおりです。サブクラス化することはできません。DefaultTreeCellRenderer
それでも。であるためJLabel
です。
自分で書くのTreeCellRenderer
は複雑すぎます。
なんで?理由:には17のフィールドがあり、 's
DefaultTreeCellRenderer
を実装するだけではありません。TreeCellRenderer
getTreeCellRendererComponent(...)
どのような簡単な解決策を考案できますか?
JTextPane
複雑なフォーマットを実行できるようにするには、ツリー要素が必要です。
java - BasicTreeUIでキー処理をオフにする方法
BasicTreeUI(JDK 1.5)は、その文字で始まるツリー上の項目に移動することにより、JTree上の主要なイベントを処理します。その動作をオフにする最も簡単な方法は何ですか?
java - これらのエラーおよび警告アイコンは Java リソースとしてどこにありますか?
カスタム アイコンを JTree にレンダリングするために使用しているカスタム ツリー セル レンダラーがあります。JOptionPane がそれぞれ警告メッセージとエラー メッセージの両方に表示する警告アイコンとエラー アイコンがとても気に入っています。明らかに、次のコードを使用して自分で使用するアイコンを取得できますが、これは非常に手間がかかり、決して使用しないダイアログをインスタンス化する必要があります。
これらのアイコンをリソースとして取得するためのより良い方法が必要ですが、Java API からこれを行う簡単な方法が見つかりません。誰にも提案はありますか?
java - ノードの展開を防ぐためにJTreeのダブルクリックをオーバーライドしますか?
JTree でフォルダ ノードを展開するには、2 つのデフォルト メカニズムがあるようです。1 つは、ノードの横にある展開/折りたたみアイコンをクリックすることです。もう 1 つの方法は、ノード自体をダブルクリックすることです。
この 2 番目のメカニズムを停止する方法はありますか? ノードのダブルクリックをオーバーライドして何かを実行し (別の表示を更新して、ダブルクリックされたノードの統計を表示する)、ツリー ノードを展開/折りたたまないようにしたいと考えています。(明確にするために、ノードが展開/折りたたまれるのを防ぎたくありません。ユーザーに展開/折りたたみアイコンをクリックするように要求したいだけです。)これを行うにはどうすればよいですか?
java - チェックボックス付きのJTree
JTreeにチェックボックスを追加する必要があります。カスタムTreeCellRenderer/TreeCellEditorは正しいアプローチのようです。これまで、このWebページでCheckBoxNodeRendererアプローチを使用しました。次の2つを除いて、問題なく動作します。
- チェックボックスの上+下に追加の空白があります。通常のJTreeと同じにしておきたいです。
- チェックボックス自体をクリックする(チェックボックスを切り替えようとする)ことと、チェックボックスに関連付けられたテキストをクリックすること(イベントリスナーがこれを対応するツリーノードをクリックしていると解釈してアクションを実行できるようにする必要がある)を区別したいと思います。適切です)
これらのことを行う方法はありますか?チェックボックスのあるJTreeを探しましたが、あまり見つかりませんでした。JIDEは良さそうですが、この場合は無料のオープンソースソフトウェア(GPLは問題ありません、LGPLは問題ありません)を使用する必要があります。(または独自のチェックボックスツリーを作成します)
java - カスタム TreeCellRenderer (Java、Swing) を使用して、JTree でフィードバックをドラッグ アンド ドロップします。
カスタム TreeCellRenderers を使用して JTree から派生したクラスがあります。そのツリーにドラッグ アンド ドロップを実装したので、ユーザーはツリー ノードを再配置できます。
ドロップ モードはDropMode.ON_OR_INSERT
であるため、ユーザーは他のノード上または他のノード間でノードをドロップできます。ユーザーがノードをドラッグしているときに、ポインターがノード間を指している場合、ノードが挿入される場所を示す青い線が描画されます。ポインターがノード上にある場合、ノードが追加される場所は示されません。これは、カスタム TreeCellRenderer を使用した場合にのみ発生します。DefaultTreeCellRenderer を使用すると、ドラッグ中にドロップ ノードが強調表示されます。
Web でいくつかの例を見つけました。現在 JTree で強調表示されているノードを保存し、TreeCellRenderer からクエリを実行し、強調表示されるはずのノードに対して TreeCellRenderer が呼び出された場合にノードを別の色でレンダリングします。
ドロップ ノードを強調表示するためのより洗練されたソリューションはありますか? DefaultTreeRenderer がこれを行う方法を理解できませんでした-機能をドラッグアンドドロップするためのフックがないようです。