Как установить внешний вид jframe
Я немного смущен тем, где это поставить:
try {
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch(Exception e){
}
Я не продлила JFrame
класс, но использовать JFrame f = new JFrame();
Спасибо :D
5 ответов
наиболее распространенное место для этого-прямо внутри вашего метода static 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
Примечание: это не ответ на вопрос (который был здесь для установки LAF). Вместо этого он отвечает на вопрос how-to установите LAF таким образом, чтобы он не зависел от имени пакета. Упрощает жизнь в случае, если класс перемещается, как f.Я. Нимбус из ком.солнце* в javax.качать.
основной подход состоит в том, чтобы запросить UIManager для его установленных LAFs, перебирать их, пока не будет найдено совпадение и установить его. Спишь такими методами, как это реализовано в 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);
UIManager.setLookAndFeel()
не будет работать с уже созданными компонентами. Вот хороший способ установить внешний вид для каждого окна в вашем приложении. Это установит его на всех открытых окнах в вашей программе. Любые новые созданные окна будут использовать то, что было установлено UIManager.
UIManager.setLookAndFeel(lookModel.getLookAndFeels().get(getLookAndFeel()));
for(Window window : JFrame.getWindows()) {
SwingUtilities.updateComponentTreeUI(window);
}
вы можете поместить этот блок в свой метод 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
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);
}