Java Look&Feel(L&F)[終了]


163

私は、個人用にJava Swingを使用してデスクトップアプリケーションを開発しています。アプリケーションに美しいルックアンドフィールが必要です。JavaまたはサードパーティのAPIを使用してどうすればよいですか?


1
Nilo J.GonzálezによるLGPLのルックアンドフィールNimrod:personales.ya.com/nimrod/faq-en.html。少しバグがある(JButtonの背景色を設定できない-半透明のBufferedImageテクニックを使用してpaintComponent()オーバーライドで解決)
ecle

回答:


199

2
ニンバスの下でどのようにアプリケーションの外観を参照してくださいする簡単な方法は、引数`-Dswing.defaultlaf = javax.swing.plaf.nimbus.NimbusLookAndFeel`などでアプリを起動 java -Dswing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel -jar MyApp.jar
番号

3
既存のアプリでMetal Look&Feelを使用するには-Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel、Java呼び出しにパラメーターを追加します。
maciej

「Retina」ディスプレイで問題ないのはどれですか。(OS Xだけでなく、Win 8には高DPI画面を備えたラップトップもあります)
Display Name

61

私が開発しているL&Fを試すことができます-WebLaF
これは、UI開発を成功させるために必要な3つの部分を組み合わせています。

  • Swingアプリケーション向けのクロスプラットフォームで再スタイル可能なL&F
  • 拡張Swingコンポーネントの大規模なセット
  • さまざまなユーティリティとマネージャー

バイナリ: https : //github.com/mgarin/weblaf/releases
ソース: https : //github.com/mgarin/weblaf
ライセンス: GPLv3および商用

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

まったく新しいL&Fから始めた主な理由は、既存のL&Fのほとんどに柔軟性がないためです。ほとんどの場合、スタイルを変更することはできません(いくつかの色を変更して、一部のUI要素をオン/オフにすることしかできません)。 /またはそれを行うには不便な方法しかありません。カスタム/サードパーティコンポーネントのスタイリングに関しては、さらに悪いことに、特定のL&Fでスタイル設定された他のコンポーネントとは似ていないか、まったく異なるように見えます。そのため、アプリケーションが専門的でなく、不快に見えます。

私の目標は、完全にカスタマイズ可能なL&Fに、広く知られている便利な追加コンポーネント(日付チューザー、ツリーテーブル、ドッキング可能およびドキュメントペインなど)と、役立つマネージャーとユーティリティを追加することです。 WebLaFをアプリケーションにすばやく統合し、Swingを使用して素晴らしいUIを作成するために必要なコードの量。


ライセンスを確認せずにジャンプする前に、ライセンスがgplであることに注意してください。これは、問題になる場合とそうでない場合があります。
Tinus Tate

商用ライセンスに数百ユーロを費やすことは、弁護士にアドバイスのためにそのお金を与えるよりもはるかに優れていると思います。これは、「製品を使用する場合は商用ライセンスを購入する」ことになるでしょう。その上、彼らのサイトによれば、商用ライセンスを購入すると、優先的な技術サポートを受けることができます。
ジェフ・ホルト

4

JTattoo(http://www.jtattoo.net/)を使用することもできます。JTattoo には、使用できるクールなテーマがいくつかあります。

jarをダウンロードしてクラスパスにインポートするか、maven依存関係として追加します。

<dependency>
        <groupId>com.jtattoo</groupId>
        <artifactId>JTattoo</artifactId>
        <version>1.6.11</version>
</dependency>

彼らが利用できるクールなテーマのいくつかのリストはここにあります:

  • com.jtattoo.plaf.acryl.AcrylLookAndFeel
  • com.jtattoo.plaf.aero.AeroLookAndFeel
  • com.jtattoo.plaf.aluminium.AluminiumLookAndFeel
  • com.jtattoo.plaf.bernstein.BernsteinLookAndFeel
  • com.jtattoo.plaf.fast.FastLookAndFeel
  • com.jtattoo.plaf.graphite.GraphiteLookAndFeel
  • com.jtattoo.plaf.hifi.HiFiLookAndFeel
  • com.jtattoo.plaf.luna.LunaLookAndFeel
  • com.jtattoo.plaf.mcwin.McWinLookAndFeel
  • com.jtattoo.plaf.mint.MintLookAndFeel
  • com.jtattoo.plaf.noire.NoireLookAndFeel
  • com.jtattoo.plaf.smart.SmartLookAndFeel
  • com.jtattoo.plaf.texture.TextureLookAndFeel
  • com.jtattoo.plaf.custom.flx.FLXLookAndFeel

よろしく


1

アプリケーションのユーザーがユーザーのシステムに基づいてルックアンドフィールを変更できるようにするダイアログを作成するコードを次に示します。あるいは、必要なルックアンドフィールをアプリケーションに格納できる場合は、それらを「移植可能」にすることができます。これが望ましい結果です。

   public void changeLookAndFeel() {

        List<String> lookAndFeelsDisplay = new ArrayList<>();
        List<String> lookAndFeelsRealNames = new ArrayList<>();

        for (LookAndFeelInfo each : UIManager.getInstalledLookAndFeels()) {
            lookAndFeelsDisplay.add(each.getName());
            lookAndFeelsRealNames.add(each.getClassName());
        }

        String changeLook = (String) JOptionPane.showInputDialog(this, "Choose Look and Feel Here:", "Select Look and Feel", JOptionPane.QUESTION_MESSAGE, null, lookAndFeelsDisplay.toArray(), null);

        if (changeLook != null) {
            for (int i = 0; i < lookAndFeelsDisplay.size(); i++) {
                if (changeLook.equals(lookAndFeelsDisplay.get(i))) {
                    try {
                        UIManager.setLookAndFeel(lookAndFeelsRealNames.get(i));
                        break;
                    }
                    catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                        err.println(ex);
                        ex.printStackTrace(System.err);
                    }
                }
            }
        }
    }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.