How to set Nimbus look and feel in main
Asked Answered
F

3

5

I am just learning Java and still have not been able to sort out this little problem I have.

My pop up Calendar uses Nimbus look and feel, but I have panels and container Jtables that use Java's look and feel - I am trying to make every GUI screen/ window use the Nimbus look and feel. It was suggested by Merky to put the following code in my main to make every subsequent screen have the Nimbus look and feel, but I cannot get it to work, so where and how should I put this code?

public static void main(String args[]) {
    SA md = new OptraderSA("Copyright© 2010 Simon Andi");

    Dimension sd = Toolkit.getDefaultToolkit().getScreenSize();

    md.setLocation(sd.width/2-400/2, sd.height/2-400/2);
    md.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    /*Suggested Code*/
    try {
        for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                UIManager.setLookAndFeel(info.getClassName());
                System.out.println("CHOSEN THIS");
                break;
            } else {
                UIManager.setLookAndFeel  ("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
            }
        }
    } catch (Exception e) {
        // If Nimbus is not available, you can set to another look and feel.
        // I can't get it to compile or work.
    }

}
Futurism answered 6/1, 2011 at 17:13 Comment(0)
D
13

This is what I do in my main method to enable Nimbus look and feel:

public static void main(String[] args) {
    try {
        for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (Exception e) {
        // If Nimbus is not available, fall back to cross-platform
        try {
            UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
        } catch (Exception ex) {
            // Not worth my time
        }
    }
    new Controller();
}

You need to be sure to configure the UIManager with the Nimbus look and feel before you start the swing event dispatch thread (before calling view.setVisible(true)).

Dubenko answered 6/1, 2011 at 17:55 Comment(1)
@ BenjaminLinus....thank you! Like you mentioned it has to be configured before I start the EDT.Sheathbill
D
1

I think try with:

for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
    if ("Nimbus".equals(info.getName())) {
        UIManager.setLookAndFeel(info.getClassName());
        System.out.println("CHOSEN THIS");
        break;
    }
}
Dextrosinistral answered 23/3, 2011 at 12:8 Comment(1)
Now I can actually see your code (please use code formatting in future), it seems it does nothing more than what user347500 demonstrated, better, more than 2 months ago. :(Dilley
S
1

To set Nimbus look and feel, add this code in your main method:

try {
    for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
        if ("Nimbus".equals(info.getName())) {
            UIManager.setLookAndFeel(info.getClassName());
            break;
        }
    }
} catch (Exception e) {
    e.printStackTrace();
}
Stupendous answered 3/4, 2018 at 6:47 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.