問題タブ [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.

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

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

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

javafx - JavafxまたはScalafxでtableViewを反復するには?

私は Scala の初心者です。カスタムタイプ「Constraint」を持つtableViewを使用しており、行ごとに繰り返す必要があります。

ここに私がこれまでに得た場所があります:

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

java - JavaFX/ScalaFXでスクロール可能でズーム可能なマップを実装するには?

コンピュータ ゲームのアクセサリとしてマップを実装しています。いくつかの有益なオーバーレイを使用して、コンピューター ゲームの地理を表示する必要があります。JavaFX、より正確には ScalaFX でこれを達成するための最良の方法は何だろうか。

今、私は非常に素朴な実装をしています:

  • さまざまなズーム レベルのマップのタイルがあります。ズーム レベルごとImageViewに を a に配置し、Groupそのグループを変換して、すべてのズーム レベルが同じ座標を使用するようにします。
  • オーバーレイには、同じ座標を持つ別のグループが使用されます。
  • マウス ホイールを使用してズームし、現在のズームに応じて 1 つのズーム レベルのみを表示します。
  • これをすべて にパックしますScrollPane

これにはいくつかの制限があります。

  • すべてのズーム レベルのすべてのタイルが起動時に読み込まれます。それは醜いですが、私の特定のユースケースではうまくいきます。
  • ScrollPane の使用は、マップの境界が制限されている場合にのみ機能します。繰り返しますが、ここでは問題ありませんが、一般的なマップではそうではありません。
  • UX は奇妙です。ScrollPane はマウス ホイールでスクロールしますが、ほとんどのマップはドラッグ アンド ドロップでスクロールします。ほとんどのマップは、マウス ホイールまたはピンチでズームします。ジェスチャ中にズームが「アンカー」(マウス/タッチ位置) を保持することが重要です。(箱から出してすぐにモバイル対応になるのもいいですが、それは今のところ夢のようなものです...)
  • 現在のズームに応じて、オーバーレイのさまざまなレベルの詳細が可能ですが、おそらくあまり効率的または便利ではありません。

明らかに、これは私が試したアプローチの 1 つです。この質問は、いくつかの eppleton によるライブラリに言及していますが、維持されていないようで、ライブラリを説明するために使用されたブログはもう存在しません。また、ゲームにとって意味のあるタイルを使用して、ゲームエンジンを提供することに重点を置いているようです。マップ内のタイルは単なる画像であり、オーバーレイは 1 つのタイルがどこで開始または終了するかを気にしません。

これを具体的な質問で締めくくります。私のニーズを満たすために使用できるライブラリやテクニックはありますか? 特に 3 番目の箇条書き (UX) に興味がありますが、適切なアプローチがあれば、ポイント 1 から 3 をカバーすると思います。

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

javafx - MeshView scalafx/javafx のクリッピング

次のテスト コードがあります。ここでは、MeshView を円でクリップしようとしています。また、meshView をグループに入れてクリッピングしようとしましたが、これは黒い円になります。

できればグループに入れずに、MeshView をクリップする方法はありますか?

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

scala - プライベート フィールドの Scala 名マングリングと JavaFX FXML インジェクション

次の例と説明は非常に長いので、ここに私の質問の要点を示します。フィールド インジェクションの実行を主張するフレームワークを使用する場合、プライベート フィールドの scalac の名前マングリングを処理するにはどうすればよいですか?


ScalaFX/JavaFX と FXML を使用して、Scala でアプリケーションを作成しています。FXML を使用して JavaFX でビューを定義すると、FXML で定義されたオブジェクト (ボタンやテキスト フィールドなど) が次の方法でコントローラーに挿入されます。

  • fx:idFXML要素へのプロパティの追加
  • FXML で定義されたプロパティ@FXMLの値と一致する注釈とフィールド名を使用して、コントローラーに (通常は非公開の) フィールドを追加します。fx:id
  • がコントローラーをインスタンス化するとき、リフレクションによって、注釈付き要素をコントローラーの対応する注釈付きフィールドにFXMLoader自動的に挿入します。fx:id@FXML

私はフィールド インジェクションの大ファンではありませんが、FXML の仕組みはそのようになっています。ただし、状況によってはコンパイラによってフィールド名のマングリングが実行されるため、Scala で予期しない複雑さに遭遇しました...

アプリケーションの例を次に示します。

test/TestApp.scala (興味深いものは何もありません。例を実行するために必要なだけです)

test.fxml (ビュー)

test/TestController.scala (test.fxml ビューのコントローラー)

アプリケーションを実行すると、printlnステートメントはtestCheckBoxが正しく挿入されることを示しますが、testButtonnull です。チェックボックスをクリックすると、予想どおり、NullPointerException呼び出し時に a がありますtestButton.text_=

コンパイルされたクラスを見ると、その理由は明らかです。

  • メソッドでTestController$$anonfun$initialize$1渡される無名関数用のクラスがありますtestCheckBox.selected.onChange()initialize()
  • クラスには、(予想どおり) と(単なる ではなく)TestControllerの 2 つのプライベート フィールドと、アクセサー/ミューテーター メソッドがあります。それらのうち、 のアクセサ メソッドのみが public です。testCheckBoxtest$TestController$$testButtontestButtontest$TestController$$testButton

明らかに、Scala コンパイラはtestButtonフィールドの名前を変更しました。これは、(からアクセスするTestController$$anonfun$initialize$1ために) アクセサー メソッドを public にする必要があり、フィールドとアクセサー/ミューテーター メソッドが同じ名前を保持する必要があるためです。


さて、最後に私の質問です。この状況に対処するための合理的な解決策はありますか? 今、私が行ったことは、フィールドをパブリックにすることです: コンパイラはそれらの可視性を変更する必要がないので、それらの名前を壊すことはありません. しかし、それらの分野は実際には公開する必要はありません。

注: もう 1 つの解決策は、フィールド インジェクションを完全に隠す scala-fxml ライブラリを使用することですが、他の理由から、ボグ標準の FXML ロードを使用したいと思います。

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

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 にキャストできません

どうすればこれを解決できますか?

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

javafx - Javafx scalafx FXyz 3D 形状を制御する方法

次のテスト コードでは、ClothMesh (FXyz lib から) を使用して円ハンドルをドラッグ、回転、およびドラッグできます。すべてがうまく機能し、FXyz は素晴らしいです。ここで、SegmentedSphereMesh を使用したいと思います。円ハンドルが 2D であり、球にラップされていないことを除いて、ほとんどの場合は機能します。2D と 3D を混在させると問題が発生する可能性があることは知っています。ただし、機能するのは非常に近いです。ハンドルを球体で動作させるにはどうすればよいですか、または同じ機能を実行する別の方法は何でしょうか。カメラを動かして形状/メッシュを制御したくないことに注意してください。