Как настроить внешний вид jframe - PullRequest
9 голосов
/ 03 марта 2012

Я немного запутался, где поставить это:

try {
    UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
    UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch(Exception e){

}

Я не расширил класс JFrame, но использовал JFrame f = new JFrame(); Спасибо: D

Ответы [ 5 ]

12 голосов
/ 13 марта 2012

Примечание: это не ответ на вопрос (который был , где для установки LAF).Вместо этого он отвечает на вопрос как установить LAF таким образом, который не зависит от имени пакета.Упрощает жизнь в случае перемещения класса, например, от Nimbus из com.sun * до javax.swing.

Основной подход заключается в том, чтобы запрашивать UIManager о его установленных LAF, проходить по ним, пока не будет найдено совпадениеустановить это.Вот такие методы, которые реализованы в SwingX:

/**
 * Returns the class name of the installed LookAndFeel with a name
 * containing the name snippet or null if none found.
 * 
 * @param nameSnippet a snippet contained in the Laf's name
 * @return the class name if installed, or null
 */
public static String getLookAndFeelClassName(String nameSnippet) {
    LookAndFeelInfo[] plafs = UIManager.getInstalledLookAndFeels();
    for (LookAndFeelInfo info : plafs) {
        if (info.getName().contains(nameSnippet)) {
            return info.getClassName();
        }
    }
    return null;
}

Использование (здесь без обработки исключений)

String className = getLookAndFeelClassName("Nimbus");
UIManager.setLookAndFeel(className); 
11 голосов
/ 13 марта 2012

Наиболее распространенное место, где это можно сделать, находится прямо внутри вашего статического метода void main (String [] args).Вот так:

public static void main(String[] args) {
    try { 
        UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); 
    } catch(Exception ignored){}

    new YourClass(); //start your application
}  

для получения дополнительной информации смотрите на этом сайте: http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

9 голосов
/ 26 февраля 2013

UIManager.setLookAndFeel() не будет работать с уже созданными компонентами. Вот хороший способ настроить внешний вид каждого окна в вашем приложении. Это установит его на все открытые окна в вашей программе. Любые новые созданные окна будут использовать то, что было установлено UIManager.

    UIManager.setLookAndFeel(lookModel.getLookAndFeels().get(getLookAndFeel()));
    for(Window window : JFrame.getWindows()) {
        SwingUtilities.updateComponentTreeUI(window);
    }
2 голосов
/ 08 июля 2013

Вы можете поместить этот блок в метод main после создания JFrame или в конструктор класса, расширяющего JFrame.


    try
    {
        //Set the required look and feel
        UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        //Update the component tree - associate the look and feel with the given frame.
        SwingUtilities.updateComponentTreeUI(frame);
    }//end try
    catch(Exception ex)
    {
        ex.printStackTrace();
    }//end catch

0 голосов
/ 06 июля 2015
   try {
        for (javax.swing.UIManager.LookAndFeelInfo info :  javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
     } catch (ClassNotFoundException | InstantiationException || javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(  Home.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
...