web-dev-qa-db-ja.com

「モダンな外観」Javaデスクトップアプリケーションを作成するにはどうすればよいですか?

これと同様の質問が定期的に尋ねられますが、これらの回答の多くは時代遅れです。

Java現代のデスクトップアプリに匹敵する品質のGUIを備えたクロスプラットフォームデスクトップアプリケーションを構築する必要があります。

Swingはデフォルトの選択ですが、Swingアプリケーションには、少なくとも、かなり時代遅れで不格好に見えません(主観的、私は知っていますが、GUIでは審美的な判断を避けるのは難しいです)。

新しいBitcoinクライアントはQTをJavaバインディングで使用するようになり、魅力的なユーザーインターフェイスを備えていますが、これはもはや純粋なJavaではないという欠点があります。

Swing関連のライブラリを検索すると、デスクトップアプリケーションの美学はそれ以来大きく進化しているにもかかわらず、5年以上前のものを見つけることができます。

Javaデスクトップアプリケーションをゼロから構築する必要がある場合、そのGUIには何を使用しますか?

47
sanity

Javaプログラムの外観を変更します。これにより、プログラムの全体の「テーマ」をカスタマイズできます。 ここ はLAFの変更に関する情報です。

9
lrAndroid

また、 WebLaF を調べるための新しいLaFを提供することもできます。現在、WebLaFライブラリの基本機能を使用するだけで、多くのUI機能をもたらし、Swingでの作業を誰でも簡単に行えるように取り組んでいます。

WebLaFコンポーネントの一部がどのように見えるかを示すいくつかの例: Some of WebLaF components

私がターゲットにしている主な目標のいくつか:

  1. すべてのSwingコンポーネントをサポートする優れたモダンなL&F
  2. 標準のSwingにはない追加コンポーネントの広範なセット
  3. コードの作成を支援するユーティリティクラスの大きなセット

WebLaFライブラリは、他にもいくつかの利点と独自の機能を提案しています。

  1. オープンソースプロジェクト(GPLv3ライセンス)
  2. ペインタシステムを使用した簡単なコンポーネントスタイリング(特に9パッチファイルを使用)
  3. デフォルトの「Web」スタイルをすばやく簡単にカスタマイズ
  4. Swingアプリケーションインターフェイスの作成を高速化および簡素化する多くの機能

demo-app を試して、モダンで十分かどうかを確認してください:)

31
Mikle Garin

JavaFX 2. を調べましたか? Swingと簡単に相互運用できるように設計されており、多くの最新の「見栄えの良い」コントロールがあります。

また、lrAndroidが言及しているように、システムのルックアンドフィールを次のように設定すると、Swingアプリはネイティブアプリのように見えます。

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
9
Bringer128

最新のJavascriptフレームワーク(ExtJS、Dojoなど)は、同じウィジェット以上(たとえば、Excelのようなグリッド)、より幅広いL&Fを提供し、通常はユーザーのOSによりよく適合します。ユーザーはブラウザにも非常に満足しており、「最新のもの」はWeb上にあり、今日のWebはHTML + Javascriptです。

アプリを「Webライク」に変換するオーバーヘッドは最小限です。組み込みのJettyは非常に小さくすることができ、ディスクスペースの問題ははるかに少なくなりました。

アプリケーションの将来の進化のために、このルートを下る追加の利点があります。

  • 突然、デスクトップアプリはサーバーアプリになり、別のデスクトップからアクセスできます。数週間のうちにデスクトップアプリを「ポータル」に昇格させることができました。
  • (Ajax)Webサービスの観点からアプリを書き換えると、完全なREST(またはSOAP ...)サービススタックの作成に簡単に移行できます。その後、アプリを他のアプリケーションに簡単に統合できます。外部監視など.
  • UIレイヤーのみに集中することにより、他のデバイス(スマートフォン、タブレットなど)のサポートがはるかに簡単になります。
  • アプリが成長するにつれて、懸念の分離はより明確になります。 UIで作業する開発者は、低レベルのコードを台無しにする必要はありません。
  • Javaでプログラミングしない優秀なJS/HTMLデザイナーと開発者がたくさんいます。

[〜#〜] edit [〜#〜]

3年後、これは 電子 のおかげで非常に簡単になりました

6
Bruno Grieder

次のいずれかを試してください。

  1. JTattoo
  2. JGoodies
  3. Quaqua
4
Crazenezz

私はこの質問が古いことを知っていますが、FXを使用したくなくてもSwingを使用したい場合は、 MacWidgets を試してください。いくつかのプロジェクトで使用しました。それは非常に軽く、見栄えが良いです。以下は私が取り組んでいた古いプロジェクトで、時間が経つにつれてmacwidgetsを使用して完成し、現在は社内で使用しています。

http://www.digitalhand.net/projects/jdataanalyzer/mainGUI.png

2
Jesse Hernandez

Nimbusのルックアンドフィールはどうですか? Oracle Link もご覧ください SO-Question

2
keuleJ

QTは非常に広範ですが、非常に大きく(肥大化)複雑です。たとえば、Open Officeで使用されているSWTライブラリもあります。 SWTは、Swingがエミュレートするボタン、テーブルなどにネイティブUIウィジェットを使用します。

ただし、HTMLおよびJavascriptを使用して、ブラウザー用のリッチクライアントアプリケーションを作成する傾向は明らかです。これらの両方は、過去数年間で大きな進歩を遂げました。

HTML5は、切断されたシナリオをサポートするために、より優れたフォームやローカルデータベースなどの機能を備えたリッチクライアントアプリケーションを特に対象としています(この最後の機能はまだ標準化されていませんが、すべての最新のブラウザーで実装されていることに注意してください)。

Javascriptには、jQueryとその多くのプラグインを備えた強力なライブラリがあります。 Coffeescriptのような言語でさえ、よりシンプルで強力な構文でJavascriptを生成するために使用できます。

また、そのようなアプリが外部サーバーに接続する必要もありません。フットプリントの小さなローカルサーバー(例:jetty、node.js、...)およびデータベース(SQLite、H2、...)をクライアントにインストールして、完全に自己完結型のアプリケーションを作成できます。

1
Bernard

スイングは良好です(安定しており、文書化されており、2026年までサポートされています)。問題は、非常に限られた数の定型的な選択肢を提供するLookAndFeelシステムに依存していることです。各コンポーネントの外観を個別に変更し、その創造性を発揮するのは簡単なはずです。残念ながらそれは苦痛です。 JavaFXを作成する代わりに、IMHOフレームワークをSwingの上に構築して、それを可能にする必要があります。

https://github.com/dotxyteam/ReflectionUI をご覧ください。

Ex GUI: http://javacollection.net/reflectionui/wp-content/uploads/2017/08/general.png

0
user3649688