これと同様の質問が定期的に尋ねられますが、これらの回答の多くは時代遅れです。
Java現代のデスクトップアプリに匹敵する品質のGUIを備えたクロスプラットフォームデスクトップアプリケーションを構築する必要があります。
Swingはデフォルトの選択ですが、Swingアプリケーションには、少なくとも、かなり時代遅れで不格好に見えません(主観的、私は知っていますが、GUIでは審美的な判断を避けるのは難しいです)。
新しいBitcoinクライアントはQTをJavaバインディングで使用するようになり、魅力的なユーザーインターフェイスを備えていますが、これはもはや純粋なJavaではないという欠点があります。
Swing関連のライブラリを検索すると、デスクトップアプリケーションの美学はそれ以来大きく進化しているにもかかわらず、5年以上前のものを見つけることができます。
Javaデスクトップアプリケーションをゼロから構築する必要がある場合、そのGUIには何を使用しますか?
Javaプログラムの外観を変更します。これにより、プログラムの全体の「テーマ」をカスタマイズできます。 ここ はLAFの変更に関する情報です。
また、 WebLaF を調べるための新しいLaFを提供することもできます。現在、WebLaFライブラリの基本機能を使用するだけで、多くのUI機能をもたらし、Swingでの作業を誰でも簡単に行えるように取り組んでいます。
WebLaFコンポーネントの一部がどのように見えるかを示すいくつかの例:
私がターゲットにしている主な目標のいくつか:
WebLaFライブラリは、他にもいくつかの利点と独自の機能を提案しています。
demo-app を試して、モダンで十分かどうかを確認してください:)
JavaFX 2. を調べましたか? Swingと簡単に相互運用できるように設計されており、多くの最新の「見栄えの良い」コントロールがあります。
また、lrAndroidが言及しているように、システムのルックアンドフィールを次のように設定すると、Swingアプリはネイティブアプリのように見えます。
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
最新のJavascriptフレームワーク(ExtJS、Dojoなど)は、同じウィジェット以上(たとえば、Excelのようなグリッド)、より幅広いL&Fを提供し、通常はユーザーのOSによりよく適合します。ユーザーはブラウザにも非常に満足しており、「最新のもの」はWeb上にあり、今日のWebはHTML + Javascriptです。
アプリを「Webライク」に変換するオーバーヘッドは最小限です。組み込みのJettyは非常に小さくすることができ、ディスクスペースの問題ははるかに少なくなりました。
アプリケーションの将来の進化のために、このルートを下る追加の利点があります。
[〜#〜] edit [〜#〜]
3年後、これは 電子 のおかげで非常に簡単になりました
私はこの質問が古いことを知っていますが、FXを使用したくなくてもSwingを使用したい場合は、 MacWidgets を試してください。いくつかのプロジェクトで使用しました。それは非常に軽く、見栄えが良いです。以下は私が取り組んでいた古いプロジェクトで、時間が経つにつれてmacwidgetsを使用して完成し、現在は社内で使用しています。
http://www.digitalhand.net/projects/jdataanalyzer/mainGUI.png
Nimbusのルックアンドフィールはどうですか? Oracle Link もご覧ください SO-Question
QTは非常に広範ですが、非常に大きく(肥大化)複雑です。たとえば、Open Officeで使用されているSWTライブラリもあります。 SWTは、Swingがエミュレートするボタン、テーブルなどにネイティブUIウィジェットを使用します。
ただし、HTMLおよびJavascriptを使用して、ブラウザー用のリッチクライアントアプリケーションを作成する傾向は明らかです。これらの両方は、過去数年間で大きな進歩を遂げました。
HTML5は、切断されたシナリオをサポートするために、より優れたフォームやローカルデータベースなどの機能を備えたリッチクライアントアプリケーションを特に対象としています(この最後の機能はまだ標準化されていませんが、すべての最新のブラウザーで実装されていることに注意してください)。
Javascriptには、jQueryとその多くのプラグインを備えた強力なライブラリがあります。 Coffeescriptのような言語でさえ、よりシンプルで強力な構文でJavascriptを生成するために使用できます。
また、そのようなアプリが外部サーバーに接続する必要もありません。フットプリントの小さなローカルサーバー(例:jetty、node.js、...)およびデータベース(SQLite、H2、...)をクライアントにインストールして、完全に自己完結型のアプリケーションを作成できます。
スイングは良好です(安定しており、文書化されており、2026年までサポートされています)。問題は、非常に限られた数の定型的な選択肢を提供するLookAndFeelシステムに依存していることです。各コンポーネントの外観を個別に変更し、その創造性を発揮するのは簡単なはずです。残念ながらそれは苦痛です。 JavaFXを作成する代わりに、IMHOフレームワークをSwingの上に構築して、それを可能にする必要があります。
https://github.com/dotxyteam/ReflectionUI をご覧ください。
Ex GUI: http://javacollection.net/reflectionui/wp-content/uploads/2017/08/general.png