2017-09-10 16 views
1

私は、デスクトップアプリケーションを構築するためにjavafxを新たに学び始めました。しかし、私は一つのことを理解していません。ここに私の問題がある: 私たちはそのように、コードを書くことでGUIを作成することができます。JavaFXまたはFXML。違いはなんですか?


enter image description here


それとも、私たちはこのように、シーンビルダーでGUIを作成することができます。

enter image description here


第2の方法このラベルやボタンなどを置く場所のように、なぜコードを書くべきなのでしょうか?

私は新しいので、2番目の方法に弱点があるかどうかはわかりません。

+0

私の経験では、ビルダーや組み込みソフトウェアは、小さなタスク、デモ、または多くの変更を必要としないプロジェクトに適しています。なぜなら、クライアントにとってちょうど "そう"でなければならないアプリケーションを作成しなければならないとすぐに、あなたはビルダーとそのコードにハッキングしているからです。これは通常非常に時間がかかり、簡単には行えません。どちらの方法も用途は異なりますが、状況によって異なります。 – tima

+4

あなたがベストを尽くす必要のあるものに合ったスタイルを使用してください(必要に応じて同じアプリケーション内で両方を使用できます)。 FXMLはレイアウトコードをコントローラコードからうまく分離し、多くのUIデザインにとって最適です。しかし、たとえば、ボタン(またはその他のコンポーネント)を20 x 20配列にした場合、FXMLで400個のコントロールを個別に作成するよりも配列やループを使ってコード内に作成するほうがはるかに便利です –

+2

FXMLは静的です。ダイアログボックスや標準フォームなどの固定レイアウトに適しています。しかし、 'Scene'が動的であれば、FXMLを使うことができ、APIを直接呼び出さなければなりません。 FXMLは、レイアウトからロジックを分離するのに便利ですが、すべてのユースケースの解決策ではありません。 – Andreas

答えて

1

私はほとんどFXMLで自分で作業しますが、私はSceneBuilderのWYSIWYGアプローチが好きですが、コード化されたUIに戻ったケースがありました。

たとえば、ユーザーが最大10個の質問に回答するアプリケーションがあります。質問やその金額はコンパイル時には分かりません。実行時に質問用のラベルとチェックボックスをGridPaneに作成します。 GridPaneはFXMLレイアウトの一部です。これは、ListViewとカスタムListCellを使用してFXMLでのみ行うことができますが、それは実質的に多くの作業であり、ごく少数の質問があるため、Cellを再利用する必要はありません。

また、FXMLに100個のボタンを置くことは楽しいことではありません。私はAndroidでゲームlike thisを実装したときにそれを使用しました。

小さなポジショニングの違いを除き、非常に似ているビューがたくさんある場合は、複数のほぼ同じFXMLファイルを作成するのではなく、コードで作成することができます。

0

私は新しいので、2番目の方法に弱点があるかどうかはわかりません。

時間が許せば、両方のアプローチを使って別々にあなたのUIを書いてください!

あなたが新しく、いずれのアプローチの落とし穴を学びたいのであれば、いくつかのシナリオを手に入れるよりも良い方法はありません。両方のツールキットを把握し、状況。

「より良いものになる」という明確なケースがありますが、「中間」のケースはしばしば個人的な好みになります(あなただけのものではない場合、チームベースの嗜好と遵守)

関連する問題