問題タブ [treecellrenderer]

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.

0 投票する
1 に答える
2789 参照

java - レンダリング時の JTree 行の高さのサイズ変更動作を変更する

ノードが選択されている場合にのみ 3 つのテキスト フィールドを含むカスタム TreeCellRenderer を使用し、ノードが選択されていない場合はデフォルトのレンダラーを使用したいと考えています。問題は、パネルに適切な優先サイズと最小サイズを設定したにもかかわらず、JTree が編集された行の高さを更新しないことです。逆に、同じパネルをエディターとして使用すると、正しくレンダリングされます。

誰かがなぜこれが起こっているのか説明できますか?
編集と同様のレンダリングのサイズ変更動作を実現するための推奨される方法はありますか?
それを直接設定するためにJTreeによって提供される方法はありますか、それともJTreeまたは(さらに悪い)L&Fを拡張する必要がありますか?

注:メソッド を掘り下げた後BasicTreeUI.startEditing(TreePath path, MouseEvent event)、次のコード行に気付きました。彼らは編集のサイズ変更を担当しているようです:

これは、さまざまな編集とレンダリングの動作を示すSSCCEです。

  • ノードが選択されていない場合、デフォルトのレンダラーが使用されます。
  • ノードを 1 回クリックすると、ノードが選択され、パネル レンダラーが使用されます。
  • ノードを 2 回クリックすると、編集が開始され、パネル エディターが使用されます。

ご覧のとおり、パネルは編集中にのみ正しくレンダリングされます。

また、これが適切な場所でない場合はご容赦ください。しかし、Swing のベスト プラクティスを推奨する優れた本があるかどうかを尋ねる機会をつかんでいますか?
Swing のアーキテクトは、Swing の設計に基づいた推奨されるソリューションをどこかに文書化しましたか? (私があまりにも多くを求めていることはわかっています) JTree TreeCellRenderer
で見つかったクレオパトラのコメントのようなアドバイスを含むクックブックは少なくともありますか?選択色:

または、CellEditorListener が、editingCanceled と editStopped のみをリッスンし、editingStarted をリッスンしないようにするなどの設計上の決定を説明します (これは、JTable.editCellAt をオーバーライドすることなく JTable のセルのサイズを変更したい場合に役立ちます)。

前もって感謝します!

0 投票する
1 に答える
70 参照

tree - 実行時に zk-treecol のサイズを変更する

実行時にツリーの列の幅のサイズを変更できるアプリケーションがあります (スプレッドシートで列の幅のサイズを変更できるため)。データ。それは実現可能ですか..?はいの場合、どうすればそれを達成できますか? 前もって感謝します。

0 投票する
1 に答える
971 参照

java - レンダリングされたツリー セルの更新

これが私のアプリケーションです。

ここに画像の説明を入力

私がやりたいことは、ユーザーの詳細が更新されると、JTree のノードも更新されるようにすることです。これは可能ですか?JTree とそのレンダリングされたセルは既に作成されていますが?

既に作成された後でも、レンダリングされたセルを更新する例が必要です。

ここに私のビューコードがあります:

そして、ここに私のコントローラーコードがあります:

オブジェクトに変更を加えた後、repaintTree() メソッドを呼び出します。今コードを調べた後、問題はノードの詳細ではなくオブジェクトの詳細を変更しているという事実にあると思いますが、それは単なる直感です。

すぐに返信してください、どうもありがとう。

0 投票する
1 に答える
344 参照

treeview - TreeView での TreeItem の選択幅

私はJavaFX 8を使用しており、現在いくつかのGUI開発を行っています。TreeView に少し問題があり、あなたの助けが必要です。

TreeView で、 TreeCell の幅全体ではなくラベルだけを選択できるかどうか知っていますか?

つまり(Netbeansの例):

適切な TreeView の選択

それ以外の :

TreeView の選択が正しくありません

前もって感謝します。

0 投票する
1 に答える
520 参照

java - ツリー ノード アイコンをクリックすると消える

ここに画像の説明を入力 /* ツリー ノード (例: WEBLOGIC が選択されている) をクリックすると、ノード アイコンが消えますが、他のアイコン (選択されていない) が表示されます。この問題を解決するために私を助けてください。これはスイング ベースのプログラムです*/

0 投票する
2 に答える
569 参照

java - カスタム オブジェクトの状態に基づいて JTree アイコンを変更する

いくつかのカスタム クラスに基づく JTree があります。複数のノードに特定のアイコンを付けたいです。したがって、このリンクに基づいて次のコードを実行しました: JTree の特定のノードのアイコンを動的に変更します。

私の各ノードは JTreePanelNode (カスタム クラス) のオブジェクトであり、setState(String s) を介して設定し、getState() を介して取得できる特定の状態を保存します。だから私が欲しいのは次のようなものです:

どうすればそのようなことを達成できますか? 私が理解していることから、レンダラーは getTreeCellRendererComponent を使用してすべてのノードを通過し、setIcon といくつかの ifs() で選択できる特定のアイコンを適用します。ただし、JTreePanelNode にキャストできません。解決策はありますか?ありがとう :)

0 投票する
1 に答える
613 参照

java - JTree の特定のノードに対して DefaultTreeCellRenderer を呼び出す方法

DefaultTreeCellRendererJTree のノードを無効にするカスタマイズがあります。

そのコードは次のとおりです。

しかし、私のコードでは使用できません。必要な場所でそれを呼び出すメソッドまたは何かを持つことはできません。たとえば、ボタンが押されたとき、またはアイテムに特定の名前が付いているときなどです。

これは、私のメソッドがモデルをウォークスルーし、与えられた文字列と一致するノードを見つける例です。

これは私CustomDefaultTreeCellRendererが自分のツリーに設定する方法です:

そして、これは私の walk メソッドの例です:

特定のノードを無効にする方法はありますか?

0 投票する
0 に答える
436 参照

java - TreeCellRenderer の getTreeCellRendererComponent() メソッドを定期的に呼び出す方法は?

ツリーを定期的に更新する必要がある Swing アプリケーションを開発しています。ツリーの各ノードは、独立したスレッドで実行される特定のタスクを表します。各ノードには、チェックボックス + 実行するタスクのステータス インジケータ (JPanel で表される) が含まれます。コンポーネントの外観を変更するために、カスタム TreeCellRenderer を作成しました。レンダラーに javax.swing.tree.TreeCellRenderer インターフェースを実装しており、以下のメソッドをオーバーライドしています。

このメソッドが 1 秒ごとに呼び出されるようにして、各ノードが実行する基になるタスクのステータスを更新するようにします。

getTreeCellRendererComponent() を 1 秒ごとに呼び出す方法を教えてください。別のスレッドから発生するイベントはどれですか? 現在、JTree を含む JPanel で updateUI() メソッドを呼び出すことでこれを実現していますが、呼び出しが getTreeCellRendererComponent() から戻るまで、UI 全体がブロックされます。

[UPDATE]: DefaultTreeSelectionModel を使用しています。新しいノードが追加または削除されたときに JTree を更新したくありませんが、各ノードに関連付けられたタスクが終了したときに JTree を更新します。UI に追加された [実行] ボタンをクリックすると、タスクが実行されます。実行ボタンが押されたら、ノードに追加された JPanel で各ノードを異なる色で更新したいと思います。

0 投票する
2 に答える
235 参照

java - JTree: TreeCellRenderer が期待どおりに動作しない

一言で言えば、最初のレベルが太字になるようにツリーをレンダリングしたいと考えています。

ただし、これにより、ツリー内のすべてのノードが太字になります。なにが問題ですか?