web-dev-qa-db-ja.com

Javaルックアンドフィール(L&F)

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

163
rajesh
200
Colin Hebert

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

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

バイナリ:https://github.com/mgarin/weblaf/releases
出典:https://github.com/mgarin/weblaf
ライセンス:GPLv and Commercial

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

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

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

61
Mikle Garin

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

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

よろしく

4
diegeelvis_SA

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

   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);
                    }
                }
            }
        }
    }
1
WIll