問題タブ [treemodel]
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 - Java:TreeModel、TableModelをJSONに、またはその逆にシリアル化しますか?
クライアント側では、ユーザー指定の入力により、一意のTreeModelとTableModelが作成されます。
これは、MongoDBに保存するためにJSONにシリアル化する必要があります(JSONドキュメントを直接保存します)。
JSONを解析してTreeModelまたはTableModelに戻す必要があります。これらは、クライアント側のソフトウェアで再度レンダリングされます。
これを容易にするライブラリまたは既存のコードはありますか?
java - JTree のすべてのノードを再帰的に削除する方法は?
でJTree
構成されているDefaultMutableTreeNodes
場合、特定のノードとそのすべての先祖からどのようにトラバースして削除しますか?
最も深いレベルから削除し、指定されたノードまで上向きに削除する必要があります。指定された開始ノードは、最後に削除する必要があります。
java - Java TreeModelのクローンを作成するにはどうすればよいですか?
2が欲しいTreeModels
:2番目のルートはTreeModel
最初のノードですTreeModel
(したがって、2番目TreeModel
は最初のサブツリーですTreeModel
)。
TreeModel
これを複製してルートを変更することで、これを簡単に実行できると思います。ただし、クローンを作成する簡単な方法があるかどうかはわかりませんTreeModel
。
java - TreeModel が新しいノードを追加するときに JTree が更新されないのはなぜですか?
ツリー内のノードの表示文字列をオプションで変更することをサポートDefaultTreeModel
するオーバーライドが設定されたを使用しています。DefaultMutableTreeNode
以下のコードに示すように、私のフォームでは、新しいノードを別のクラスで作成し、メイン データ型のラッパー クラスを介して渡すことで、ツリーに新しいノードを設定します。新しいオーバーライドされた を作成し、そこDefaultMutableTreeNode
に子を追加し (それぞれAccessPoint
が複数の子ノードを持つノードで表されます)、後で UI で使用するために保存する手順があります。
この方法で初めてノードを追加すると、うまく機能します。次のコードで追加された後続のノードは、実際には に保存されますDefaultTreeModel
が、JTree
は新しいノードで更新されません。
JTree
最初の子が追加された後にデータが入力されないのはなぜですか?
必要に応じてノードを作成するコードを含めることができますが、それは問題ではないと思います。
java - Javaカスタムツリーモデルの更新の問題
ツリーの構造は次のとおりです。
ルートブランチ--leafs
TreeModel DefaultTreeModelに使用し、オブジェクトはTreeNodeインターフェイスを実装します
葉はいくつかのオブジェクトです:
ブランチにはリーフのリストがあります:
そして、ルートはブランチのコンテナです:
新しいリーフを追加してもツリーは更新されません。リーフを追加してルートオブジェクトを使用して新しいDefaultTreeModelを作成すると、ツリーは更新されます。DefaultMutableTreeNodeの実装を監視していますが、子の挿入時にイベントが発生していません...何が間違っていますか?以前は、3つのクラスにTreeNodeインターフェイスを実装するよりもはるかに見栄えの良いTreeModelインターフェイスを実装しようとしましたが、結果は似ていました。GlazedListsについても読みましたが、ツリーの概念が嫌いです。私にとって最良の方法は、TreeModelインターフェースの概念を実装することですが、モデル内の内部リストが新しい要素を追加したときにモデルを更新するにはどうすればよいですか?...
c++ - GTKMM の set_value_vfunc 関数は嘘ですか?
TreeModel
およびから継承するカスタム ツリー ビューの内容を変更しようとしていますTreeSortable
。ただし、仮想関数set_value_impl
にはアサートのみが含まれます。実装例を探してみたところ、GTKMM の Web サイトをすべて引用しており、「これを呼び出すだけで実装できる可能性があります」と書かれていますset_value_vfunc()
。
そのような関数は GTKMM のどこにも存在しません。
TreeModel
ツリー ビューの内容を変更しようとしたときに GTKMMに違反した人はいますか?
java - JTreeからのノードの追加と削除
私は非常に基本的なものを持っていJTree
ます。急いでTreeModel
いるので、必要ないときは使いたくないです。問題を明らかにするためにSSCCEを作成しました。
時々私はノードを追加します。他の時には私はそれらを削除します。を押すAdd
と、ノードが正しく追加されます。を押すRemove
と、ノードが削除されるはずですが、削除されません。また、複数のノードを追加しようとすると、ツリーは最初に追加したノードだけにとどまります。
の更新メソッドを作成しましたJTree
。最初にルートノードからぶら下がっているすべてのノードを消去してから、作成する必要のあるノードとサブノードを確認します。
TreeModel
ツリーを操作するためにを使用しないことを除いて、ここで私が間違っていることは何ですか?
java - JTree を使用した Java Swing アプリケーション - MVC 設計: TreeModel オブジェクトを構造的に配置する場所は?
この質問の冗長性を許してください。これを書いているのは、設計上の問題を考えようとしているからです!
RMI アプリケーションへの再構築が必要な Swing アプリケーションを継承しました。お客様は、Swing GUI をローカルで実行し、RMI を介してリモート サーバー プロセスと通信する必要があります。これには、Swing クライアント間のギャップを埋める EventListeners によって刺激されたときに、ビジネス ロジックのセクションとバックエンド データベースの永続性への呼び出しを指示するコントローラー クラスが含まれます。そしてコントローラー。
サーバーで使用するために新しいビューを開発できるように、MVC 設計を実装します。
現在、Swing クライアント GUI には、DefaultTreeModel を使用して設定された JTree が含まれています。このモデルは、DefaultMutableTreeNode オブジェクトを使用して構築されます。このオブジェクトには、これらのオブジェクトとデータ ソースの間にある BusinessObject マッパーを介してビジネス オブジェクトの状態が取り込まれます。
Client と TreeModel がどのようにリンクされているかを理解するのに問題はありません。TreeModel への変更を監視するために TreeModelListener を確立しました。TreeModel オブジェクトが変更された場合は、treeHasChanged() メソッドを呼び出して JTree を再描画します。
しかし、どのプロセスが TreeModel を刺激するのかを想像しようとして頭が痛くなり、その内容がデータベース内の最新のデータで再作成され、次に TreeModelListener が呼び出されて GUI の Jtree が更新されます。TreeModel を「所有」するのは誰ですか? コントローラーの状態の一部を構成するモデル内のクラスである必要がありますか? GUI の EventListeners によるコントローラーのアクションは、TreeModel を更新するルーチンを実行するためにハード コールを行う必要がありますか?
あるいは、TreeModel は GUI ウィジェットの拡張であり、その場合はビュー コンポーネントですか? もしそうなら、このオブジェクトの状態のリフレッシュを呼び出す適切な方法は何でしょうか?
ここ数日、私はオブザーバーとリスナーの観点から考えてきたので、オブザーバーの発砲の背後で発生する動作を呼び出そうとしていることにおそらく罪を犯していることに注意する必要があります。
あなたは、非常に混乱しています!
java - ツリーを再描画せずに JTree の ImageIcon を更新しますか?
基本的に、の属性private string status="OK"
を編集します。UserObject()
DefaultTreeNode()
implements DefaultCellRenderer
の「OK」属性をレンダリングしてアイコンを設定する CustomRenderer がありUserObject
ますTreeNode
。
もともと、ノードを選択するとアイコンが変わります。Tree.revalidate()
&を使用してTree.repaint()
おり、変更が反映されています。
ただし、これが非常に効率的かどうかはわかりません。これを行う適切な方法は何ですか?やってみTreeModel.nodesChanged(new DefaultMutableTreeNode(myUserObject))
ましたが、TreeNodeChanged event
発火しません。
TreeNode の userboject が変更されてグラフィックの更新が表示されるたびに、ツリー全体を再描画することに固執していますか?
java - JTreeプログラムでノードを変更する方法は?
JTree、TreeModels、TreeModesなどを初めて使用して理解しようとしています。ローカルデバイスの近くにあるBluetoothデバイスを表すためにTreeを使用したいと思います。私のBluetoothデバイスはツリーのルートノードであり、ルートノードからの最初の子孫はすべて近くのBluetoothデバイスになります。
私はツリーを次のように設定しました(簡潔にするためにコードを短縮しました)。
JTreeが最初に表示されると、ルートノードは「ローカルBluetoothデバイス」と表示されます。ただし、Bluetoothスタックを初期化したら、ルートノードにローカルBluetoothデバイスの「わかりやすい名前」とアドレスを表示させたいと思います。
私が抱えている問題は、ルートノードを変更するにはどうすればよいですか?topTreeNodeの新しいDefaultMutableTreeNode()を作成するなど、さまざまなメソッドを試しましたが、JTreeがすぐに再描画されません。リスナーを実装することになっていますか?