2

私は現在、JInternalFrame を使用して JDesktopPane の 1 つのインスタンスで複数の小さなウィンドウを開く GUI を多用するアプリケーションに取り組んでおり、Nimbus ルック アンド フィールの外観をパーソナライズしようとしています。プライマリ カラーとセカンダリ カラーは簡単に変更できますが、個々のコンポーネントを変更しようとすると問題が発生します。現在の原因は JLabel テキストです。

これは、LnF の設定とカスタマイズの両方に使用している方法です。

(コードブロックをぼろぼろにする場合は事前にお詫びします)

protected static void GUIStyle() throws Exception
{
    //Setting GUI styling

    UIManager.put("nimbusBase", new Color(255, 128, 0));
    UIManager.put("control", new Color(65, 105, 255));
    //UIManager.put("textForeground", Color.WHITE);
    try 
    {
            for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) 
            {
                if ("Nimbus".equals(info.getName())) 
                {
                    UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
    }
    catch (Exception e) 
    {
       UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
    }

    UIManager.getLookAndFeelDefaults().put("MenuItem[Enabled].textForeground", Color.WHITE);
    UIManager.getLookAndFeelDefaults().put("MenuBar:Menu[Enabled].textForeground", Color.WHITE);
}

現在、アプリケーション内のすべての JLabel のテキストを白くしようとしていますが、この便利なリストを使用しても、それを行う特定のコンポーネントを突き止めることができないようです。

追加 してもうまくいきUIManager.getLookAndFeelDefaults().put("InternalFrame.foreground", Color.WHITE); ませんでした。

どちらもしなかった UIManager.getLookAndFeelDefaults().put("Label.foreground", Color.WHITE);

私は困惑しています。UIManager.put("text", Color.WHITE);ルック アンド フィールを設定する前に追加することで、すべてのテキストを白に変更できるため、明らかに実行可能 です。しかし、状況を考えると、すべてのテキストではなく、JLabel テキストだけを白くする必要があります。

前もって感謝します。私がこれに問題を抱えている正確な理由を説明していただければ (または、理由を説明する適切なリソースを教えてください)、ぜひご覧ください。他のコンポーネントでも同様の問題を抱えていますが、この問題の根底にたどり着くことができれば、他のコンポーネントを理解できることを願っています.

4

0 に答える 0