5

Java デスクトップ GUI アプリケーションに関して非常に一般的な質問があります。

私の経験: ここ数年、私は多数のデスクトップ アプリケーションを開発してきました。一部は Swing のみを使用し、一部は Spring-RCP (これは素晴らしいものでしたが、それでも 3 年以上更新されていないフレームワークに賭けることはできません)もう何年も)。ワルキューレRCPも見ていますが、そこもあまり動きがないように思えます。また、Wicket、Tapestry、そして最近では JSF2 (Primefaces) を使用して Web アプリケーションを開発しました。Web アプリケーションである程度の経験を積んだ私には、Java デスクトップ GUI がずっと前に放棄されたように感じます。もちろん、以前は気付きませんでしたが、Web アプリを開発した後、直接比較すると、デスクトップ UI のプログラミングがいかに面倒で複雑であるかがよくわかります。

私が探しているもの: 私はここでロケット科学を行っていません。私が最も見逃しているのは、次の単純なレイアウトのフォームを構築する簡単な方法です

label_a    input_a    feedbackMessage_a
label_b    input_b    feedbackMessage_b
....
button_save

レイアウトだけの問題ではなく、それがおそらく最小の問題です。まず、入力フィールドの値をある種の「バッキング Bean フィールド」に「バインド」する方法を探しています。また、直接フィードバックを使用したい。つまり、input_a の検証が失敗した場合、feedbackMessage_a にメッセージを表示し、それ以外の場所にはメッセージを表示したくない。3 番目に、この直接的なフィードバックで JSR-303 検証を使用したいと考えています。典型的なデスクトップ アプリケーションのソースコードを掘り下げると、通常、すべてのボタンに巨大なアクション リスナーが表示されます。ここでは、値の割り当て、検証、フィードバック メッセージの作成がすべて手動で記述されています。これをタペストリーや jsf2 のような Web フレームワークと比較してください。そこで行うことは、何らかの式言語を使用して入力フィールドを変数/フィールドに「バインド」することです。それだけです。値が検証されています (例: JSR-303 アノテーションを使用) および (すべての値が有効な場合) バッキング Bean のバインドされたフィールドに自動的に渡されます。また、検証エラーが発生した場合は、入力フィールドの ID を使用して責任のある入力フィールドを識別する検証メッセージが作成されます。その特定の ID のメッセージ コンポーネントが存在する場合、検証メッセージはそこに設定されます。それはただスムーズで論理的です。

デスクトップ GUI に戻ります。たとえば、20 個の入力フィールドを持つフォームに匹敵するユーザー インターフェイスを作成するには、おそらく 500 行ほどのリスナー コードが必要になるでしょう。最初にすべてのテキスト フィールドの値を自分で読み取り、自分で検証して、対応する変数に自分で書き込みます。 . JSR-303 を使用する場合、バリデーターを自分で呼び出すことができますが、対応する入力フィールドに戻ってそこにフィードバック メッセージを設定するのは面倒です。痛いですね。

私の質問: 痛みを和らげる方法はありますか? 最新のデスクトップ アプリケーションをどのように開発していますか? 使用しているフレームワークとその理由は何ですか? webframeworks と同様のバインド方法を使用する可能性はありますか? 上記で説明したように、「直接フィードバック」を実装するにはどうすればよいですか? ここで電車に乗り遅れたのでしょうか、それともここ数年で Web アプリケーションを作成するのが本当に簡単になったのですか? (JavaFxを除いて、それは私には少し役に立ちません)

最後に誤解 しないでほしいのですが、私は Java デスクトップ アプリケーションの大ファンです。私が働いているような中規模の会社では、同種の環境 (すべてのクライアントに同じ Java バージョンがインストールされているなど) があり、Web アプリケーションの利点は実際にはわかりません。webstart を使用すると、アプリケーションは非常に高速に起動します (もちろん、最初にダウンロードを開始した後)。それでも、Java のフロントエンド中心の Web フレームワークが光速で前進している一方で、java-desktop はほとんどまったく動いていないように見えます。私はそのままで暮らすことができますが、私は本当にこの質問をしなければなりません.

4

3 に答える 3

5

FormLayout名前が示すLayoutManagerように、コンポーネントをフォームのように見せるために特別に設計されたJGoodies の検証フレームワークを組み合わせて使用​​したユーザーから、良いフィードバックが寄せられました。

私は個人的に、社内で開発されたバインディング フレームワークの経験しかありませんFormLayout。そこでは、あなたが説明する UI の作成は、ラベルとエディターの組み合わせごとに 1 つのライナーに要約されます。確かに利用可能なライブラリがあります-それを提供するライブラリがありますが、私はそれらの経験がないため、その面での推奨事項はありません.

フォームレイアウト

  • Webサイト
  • デモ(ウェブスタートへの直接リンク)
  • を使用した典型的なレイアウトのスクリーンショットFormLayout FormLayout のスクリーンショット

検証フレームワーク

于 2012-02-22T23:56:24.530 に答える
4

Eclipse Scoutをご覧になることをお勧めしますか? Java/Eclipse ベースで、EPL の下で利用できます。

Scout は、主にビジネス アプリケーションの構築に対応します。実際の UI レンダリングからクライアント UI モデルを明確に分離することで、Eclipse SWT、Swing、または Web アプリケーション (Eclipse RAP に基づく。これは Juno リリースに付属します) でアプリを実行するオプションがあります。

フィールド検証への質問に関しては、提供されたメカニズム (目的のフィールドのメソッド execValidate() を上書きする) を快適に使用できると確信しています。

Wiki ページで利用可能なチュートリアルをご覧ください。クライアントのみのソリューション (バックアップされたサーバーなし) が必要な場合は、このハウツーも検討してください。

Eclipse Scout に関する質問については、プロジェクト フォーラムをご利用ください。

お役に立てれば。

于 2012-02-22T22:38:35.427 に答える
3

一般的で成功しているデスクトップ パターンとクリーンな実装スタイルを組み合わせることで、問題を軽減できます。Model-View-Presenter (MVP) パターンとプレゼンテーション モデルを学習することを強くお勧めします。

良い入門書は、Fowler の "Organizing Presentation Logic" です。実装スタイルについては、http://www.jgoodies.com/downloads/articles-and-presentations/ の「Guter Schreibstil für Swing」を参照してください 。スライドはドイツ語で、コードは英語です ;-)

于 2012-06-01T08:28:37.020 に答える