php editor Strawberry は、この記事で GraphStream の View と JTextField の間の同期の問題に関する Java Q&A を紹介します。 GraphStream ライブラリを使用する場合、View と JTextField の間のデータ同期で問題が発生することがあります。この記事を通じて、この問題を解決し、Java プログラムをよりスムーズかつ効率的にする方法を学びます。
問題を https://github.com/graphstream/gs-ui-swing/issues/19#issue-2109865450 に投稿しました。ただし、このリポジトリの最後の回答は 2021 年 6 月 10 日に投稿され、他の質問は返信なしで投稿されたため、そこにある質問にまだ注目している人がいるかどうかはわかりません。だからこそ、ここで改めて質問させていただきます。
ビューと 2 つの jtextfield で構成される jframe を作成しました:
ビューには 5 つのノードが表示されます。4 つは単なるランドマークであり、ユーザーによって移動される予定はなく (「fixed_*」)、1 つはユーザーによって移動されます (「unfixed」)。 2 つの jtextfield には、「固定されていない」ノードの座標が表示されます。 view と jtextfield の両方が相互に同期している必要があります。実際、ユーザーがビュー内で「固定されていない」ノードを移動すると、両方の jtextfield がそれに応じて更新される必要があります。
逆に、ユーザーがいずれかの jtextfield の座標を変更すると、それに応じてビューも更新される必要があります。ここに 4 つのテスト ケースがあります:
テスト ケース 3 と 4 の実行の違いを分析しようとしています。これを行うために、コード内のさまざまな場所に現在のスレッドの名前を出力しました。 jtextfield を介した変更はスレッド「awt-eventqueue-0」(swing のイベント ディスパッチ スレッドですよね?) で実行され、ビューを介した変更はスレッド「thread-0」で実行されていることがわかります。私の実装では、「thread-0」はグラフストリームのポンプ ループを実行するスレッドで、グラフストリームのビューア スレッドで発生するイベントを待機し、それらを「thread-0」内にコピーして戻します。グラフストリームのドキュメントに関する私の理解では:
私の実装では、swing スレッドの外側の別のスレッドからグラフストリームのグラフにアクセスすることを選択しました。したがって、以前に実行したテスト ケース 3 と 4 から次のように推測します。
edt からグラフストリームのビューを更新しても、「スレッド 0」からのグラフストリームのビューの将来の更新は妨げられません (テスト ケース 3)、
リーリー
これは、すべての依存関係を含む実行可能 jar を構築するために使用される Maven pom ファイル pom.xml です:リーリー
これら 2 つのファイルを使用するには、フォルダー mwe/ を作成し、nodesynctest.java を mwe/src/main/java/mwe/ に配置し、pom.xml を mwe/ に配置してから、mwe/ run
mvn コンパイル済みアセンブリ: 単一
###そして###
java -jar target/mwe-0.0.1-snapshot-jar-with-dependency.jar
これは完全なプロジェクト フォルダーです: mwe.zip
解決策
リーリー
2 行を渡します:###なぜ### リーリー
機能しないというのは私にとって未だに謎です。実際、https://www.php.cn/link/c305a250710e95cf6bad18c18a1c02f4
とhttps://www.php.cn/link/7c097a5ed40a8d91afd49026dd3b1062
のドキュメントには、 # を使用できると記載されています。 # #xy属性を使用してノードの座標を設定します。ただし、属性
xyz の使用も推奨されます。そこでコードを次のように変更してみました:
并且它有效!我将在项目的 github 存储库上发布问题。unfixedGraphStreamNode.setAttribute("xyz", myUnfixedNode.x, myUnfixedNode.y, 0.0);
以上がGraphStream の View と JTextField 間の同期の問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。