2017-07-30 11 views
0

私が現在抱えている問題の1つは、動的にロードされたAnchorPaneに実装されているラベルのテキストを変更できないようです。これはコントローラーやJavaFX/TornadoFXの仕組みに関係すると思われますが、私が間違っていることを見つけることができません。TornadoFX:ラベルテキストが更新されない

問題はthis classで発生し、showSystemDetails()メソッドで発生します。私は、サイドバーの "System Details"ボタンを押すと、ラベルが必要な値に更新されることが予想されますが、何らかの理由でこれは起こっていません。

私が間違っていることを指摘したり、建設的な批判を提供してください。プロジェクトはまだ完全に開発されているので、多くのことが依然として乱雑であり、壊れています。

+0

をテストするために、ハードI'tsので、あなたは、今HEADからSystemDetailsViewProxy.ktクラスを削除しました。あなたはおそらくそれを戻すことができますか? –

+0

Hey Edvin、 'feature/APTFX-3-Create-system-details-view'ブランチを調べてみてください。努力をいただきありがとうございます! – ItWillDo

答えて

1

これが機能しない理由は、メニューで何かを選択するたびに新しいバージョンのFMXLファイルを手動で読み込んでいるためです。もともとSystemDetailsViewProxyによって読み込まれたFXMLファイルは正しく更新されますが、これはもうスクリーンに表示されていません。

更新されたビューを表示するには、SystemDetailsViewProxyインスタンスのルートノードを必ず戻してください。

たとえば、2つの文字列の代わりにSystemDetailsViewProxy :: classへの参照を含むDrawerMenuButton列挙型を変更し、add(viewClass)を使用して、メニューボタンをクリックしたときに正しいルートノードを追加できます。

さらに、ラベルのテキストプロパティを手動で更新する代わりに、ViewModelsとバインディングを使用する必要があります。フレームワークが無償で手助けできる手作業/エラーが起こりやすい作業を大変にやっています。

あなたのアプリケーションは、いくつかの重要な分野でのベストプラクティスを使用していない、とあなたがもののため、独自のソリューションを転がりしているフレームワークは、すでに非常によくないこと:)フレームワークによって管理されるとき

ビューはシングルトンですが、あなたinject/findを使用する代わりに、自分でインスタンス化します。その結果、重要なライフサイクルメソッドが呼び出されていないということです。

また、FXMLではなくタイプセーフのビルダーを調べることをお勧めします。

・ホープ、このことができます:)

+0

ちょっとエドウィン、説明と追加の発言をありがとう! JavaFXとTornadoFXの構造をよりよく理解するためには、もう少し詳しく見なければならないようです。 – ItWillDo

+0

Great :)質問がある場合や指導が必要な場合は、Slackに参加してください! https://kotlinlang.slack.com/messages/tornadofx/ –

関連する問題