2012-02-14 9 views
4

私はたくさんのjbuttons、jtextfields、jlabels、jmenus、gui項目を持っており、一度に1つずつバックグラウンドカラーとフォアグラウンドカラーを設定するのは非常に時間がかかります。すべてのJava Swing GUIコンポーネントの背景とフォアグラウンド(フォント)の色を同時に設定するにはどうすればいいですか?

私は、フォント(フォアグラウンド)と背景をjmenus、jmenuitems、jtextfields、jbuttonsなどのすべての色を、プロジェクトで一度に1つずつ設定するのではなく、短く/簡潔に色付けできたいと思っています。

一度に1つずつ行うのではなく、これをより簡潔に行う方法はありますか?

+0

誰もが正しいので、すべての人が正しいと答えます。 –

+0

+1 – mKorbel

答えて

4

SwingとCSSを組み合わせたり、Swing Look & Feelを使用してコンポーネントの標準的な外観を作成することができます。 Java siteさんの言葉:

CSSの実装に入る前に、カスタムのルックアンドフィールを検討してみましょう。スウィングルックアンドフィール(L & Fs)は、コンポーネントの実際の描画を非常に低いレベル(ラインとビットマップを考える)で実装するクラスのセットです。実行時に新しいものにスワップアウトすることができます。しばしばネイティブプラットフォームの外観を実装します。つまり、OSX用のJDKには、Swingアプリケーションをキャンディーボタンと青色の色合いのネイティブAquaアプリケーションのように見せる一連のクラスがあります。カスタムL & Fは強力ですが、自明ではありません。あなたは通常、20クラスほどのクラスに触れ、特別な描画コードを一括して実装する必要があります。

だから、CSSは使いやすいです。同じ記事では、Swingを使ってCSSを実装する方法についてのチュートリアルを行っています。適切なルールを作成し、CSSでそれらを実装するという素晴らしいウォークスルーを提供します。ただし、これは単に「コピー&ペースト」コードではありません。

パッケージを(コードなしで)使用したい場合は、Can I use CSS for Java Swing?という質問に対する回答はFlying SaucerJaxxです。

//Adding everything to the ArrayList 
ArrayList<JComponent> myComponents = new ArrayList<JComponents>(); 

JButton b1 = new JButton("Button 1"); 
myComponents.add(b1); 

JMenuItem item = new JMenuItem("Menu Item 1"); 
myComponents.add(item); 

//Coloring the foreground/background 
for(JComponent j : myComponents) { 
    j.setForeground(new Color("BLUE")); 
    j.setBackground(new Color("RED")); 
} 
4

彼らはとてもあなたがすべてのArrayListを作ることができ、すべてのJComponentsです。例えば、パネルの背景。そうでない場合、またはこれで十分な外観を制御できない場合は、独自のUIデリゲートを作成して特定のコンポーネント(JButtonの場合はjavax.swing.plaf.ButtonUIなど)を描画できます。これでも十分でない場合は、あなた自身のルックアンドフィールを書くことができます。 Metal LnFを拡張するだけではそれほど難しいことではなく、上記のような独自のUIデリゲートを作成し、プロパティを設定しますが、集中化します。

3

あなたはjavax.swing.UIManagerでUI定数を称えるルック・アンド・フィールを使用する場合は、あなたがちょうどそれらを設定することができます。

関連する問題