問題タブ [scalafx]
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.
scala - In ScalaFX how to get which table row is under the mouse?
I have a tableView of person. every time i pass the mouse over a person row, i want to show some information about it . ( the information can be showed in a textArea for example). Thanx
javafx - JavafxまたはScalafxでtableViewを反復するには?
私は Scala の初心者です。カスタムタイプ「Constraint」を持つtableViewを使用しており、行ごとに繰り返す必要があります。
ここに私がこれまでに得た場所があります:
java - JavaFX/ScalaFXでスクロール可能でズーム可能なマップを実装するには?
コンピュータ ゲームのアクセサリとしてマップを実装しています。いくつかの有益なオーバーレイを使用して、コンピューター ゲームの地理を表示する必要があります。JavaFX、より正確には ScalaFX でこれを達成するための最良の方法は何だろうか。
今、私は非常に素朴な実装をしています:
- さまざまなズーム レベルのマップのタイルがあります。ズーム レベルごと
ImageView
に を a に配置し、Group
そのグループを変換して、すべてのズーム レベルが同じ座標を使用するようにします。 - オーバーレイには、同じ座標を持つ別のグループが使用されます。
- マウス ホイールを使用してズームし、現在のズームに応じて 1 つのズーム レベルのみを表示します。
- これをすべて にパックします
ScrollPane
。
これにはいくつかの制限があります。
- すべてのズーム レベルのすべてのタイルが起動時に読み込まれます。それは醜いですが、私の特定のユースケースではうまくいきます。
- ScrollPane の使用は、マップの境界が制限されている場合にのみ機能します。繰り返しますが、ここでは問題ありませんが、一般的なマップではそうではありません。
- UX は奇妙です。ScrollPane はマウス ホイールでスクロールしますが、ほとんどのマップはドラッグ アンド ドロップでスクロールします。ほとんどのマップは、マウス ホイールまたはピンチでズームします。ジェスチャ中にズームが「アンカー」(マウス/タッチ位置) を保持することが重要です。(箱から出してすぐにモバイル対応になるのもいいですが、それは今のところ夢のようなものです...)
- 現在のズームに応じて、オーバーレイのさまざまなレベルの詳細が可能ですが、おそらくあまり効率的または便利ではありません。
明らかに、これは私が試したアプローチの 1 つです。この質問は、いくつかの eppleton によるライブラリに言及していますが、維持されていないようで、ライブラリを説明するために使用されたブログはもう存在しません。また、ゲームにとって意味のあるタイルを使用して、ゲームエンジンを提供することに重点を置いているようです。マップ内のタイルは単なる画像であり、オーバーレイは 1 つのタイルがどこで開始または終了するかを気にしません。
これを具体的な質問で締めくくります。私のニーズを満たすために使用できるライブラリやテクニックはありますか? 特に 3 番目の箇条書き (UX) に興味がありますが、適切なアプローチがあれば、ポイント 1 から 3 をカバーすると思います。
javafx - MeshView scalafx/javafx のクリッピング
次のテスト コードがあります。ここでは、MeshView を円でクリップしようとしています。また、meshView をグループに入れてクリッピングしようとしましたが、これは黒い円になります。
できればグループに入れずに、MeshView をクリップする方法はありますか?
scala - プライベート フィールドの Scala 名マングリングと JavaFX FXML インジェクション
次の例と説明は非常に長いので、ここに私の質問の要点を示します。フィールド インジェクションの実行を主張するフレームワークを使用する場合、プライベート フィールドの scalac の名前マングリングを処理するにはどうすればよいですか?
ScalaFX/JavaFX と FXML を使用して、Scala でアプリケーションを作成しています。FXML を使用して JavaFX でビューを定義すると、FXML で定義されたオブジェクト (ボタンやテキスト フィールドなど) が次の方法でコントローラーに挿入されます。
fx:id
FXML要素へのプロパティの追加- FXML で定義されたプロパティ
@FXML
の値と一致する注釈とフィールド名を使用して、コントローラーに (通常は非公開の) フィールドを追加します。fx:id
- がコントローラーをインスタンス化するとき、リフレクションによって、注釈付き要素をコントローラーの対応する注釈付きフィールドに
FXMLoader
自動的に挿入します。fx:id
@FXML
私はフィールド インジェクションの大ファンではありませんが、FXML の仕組みはそのようになっています。ただし、状況によってはコンパイラによってフィールド名のマングリングが実行されるため、Scala で予期しない複雑さに遭遇しました...
アプリケーションの例を次に示します。
test/TestApp.scala (興味深いものは何もありません。例を実行するために必要なだけです)
test.fxml (ビュー)
test/TestController.scala (test.fxml ビューのコントローラー)
アプリケーションを実行すると、println
ステートメントはtestCheckBox
が正しく挿入されることを示しますが、testButton
null です。チェックボックスをクリックすると、予想どおり、NullPointerException
呼び出し時に a がありますtestButton.text_=
。
コンパイルされたクラスを見ると、その理由は明らかです。
- メソッドで
TestController$$anonfun$initialize$1
渡される無名関数用のクラスがありますtestCheckBox.selected.onChange()
initialize()
- クラスには、(予想どおり) と(単なる ではなく)
TestController
の 2 つのプライベート フィールドと、アクセサー/ミューテーター メソッドがあります。それらのうち、 のアクセサ メソッドのみが public です。testCheckBox
test$TestController$$testButton
testButton
test$TestController$$testButton
明らかに、Scala コンパイラはtestButton
フィールドの名前を変更しました。これは、(からアクセスするTestController$$anonfun$initialize$1
ために) アクセサー メソッドを public にする必要があり、フィールドとアクセサー/ミューテーター メソッドが同じ名前を保持する必要があるためです。
さて、最後に私の質問です。この状況に対処するための合理的な解決策はありますか? 今、私が行ったことは、フィールドをパブリックにすることです: コンパイラはそれらの可視性を変更する必要がないので、それらの名前を壊すことはありません. しかし、それらの分野は実際には公開する必要はありません。
注: もう 1 つの解決策は、フィールド インジェクションを完全に隠す scala-fxml ライブラリを使用することですが、他の理由から、ボグ標準の FXML ロードを使用したいと思います。
scala - fxml を使用した ScalaFX i18n が機能しない
最初の作業コード:
ここでは問題ありません。今、私は次のように i18n サポートを追加したかった:
現在、コンストラクターscene = new Scene(root)
を解決できません。
私はこれを解決しようとしました
1) 次のように、新しい BorderPane を初期化します。
しかし、BorderPaneのコンストラクターが解決できないので、試してみました
2) 次のように、BorderPane にキャストします。
これは IDE では問題ありませんが、コンパイラ エラーがスローされます。
原因: java.lang.ClassCastException: javafx.scene.layout.BorderPane は scalafx.scene.layout.BorderPane にキャストできません
どうすればこれを解決できますか?
javafx - Javafx scalafx FXyz 3D 形状を制御する方法
次のテスト コードでは、ClothMesh (FXyz lib から) を使用して円ハンドルをドラッグ、回転、およびドラッグできます。すべてがうまく機能し、FXyz は素晴らしいです。ここで、SegmentedSphereMesh を使用したいと思います。円ハンドルが 2D であり、球にラップされていないことを除いて、ほとんどの場合は機能します。2D と 3D を混在させると問題が発生する可能性があることは知っています。ただし、機能するのは非常に近いです。ハンドルを球体で動作させるにはどうすればよいですか、または同じ機能を実行する別の方法は何でしょうか。カメラを動かして形状/メッシュを制御したくないことに注意してください。