Добавление пользовательского внешнего вида с помощью Netbeans
Мне нужна помощь. Я экспериментирую с Java L&F, и у меня нет абсолютно никакой идеи, как заставить NetBeans реально изменить внешний вид. Я использую Synthetica Blue Ice L&F, и в кодировании, где NetBeans имеет кодирование Nimbus LF, я закомментировал набор Nimbus, и вот что я вставил (извлечение из оригинального кодирования):
import de.javasoft.plaf.synthetica.SyntheticaBlueIceLookAndFeel;
import javax.swing.*;
import java.awt.*;
public MainMenu() {
initComponents();
try {
UIManager.addAuxiliaryLookAndFeel(new SyntheticaBlueIceLookAndFeel());
UIManager.setLookAndFeel(new SyntheticaBlueIceLookAndFeel());
} catch (Exception e) {
e.printStackTrace();
}
}
Где NetBeans вставляет свою собственную кодировку Look and Feel, я прокомментировал это, и это выглядит так:
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
UIManager.addAuxiliaryLookAndFeel(new SyntheticaBlueIceLookAndFeel());
UIManager.setLookAndFeel(new SyntheticaBlueIceLookAndFeel());
} catch (Exception e) {
e.printStackTrace();
}
// try {
// for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
// JOptionPane.showMessageDialog(null, info.getClassName());
// if ("Nimbus".equals(info.getName())) {
// javax.swing.UIManager.setLookAndFeel(info.getClassName());
// break;
// }
// }
// } catch (ClassNotFoundException ex) {
// java.util.logging.Logger.getLogger(MainMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
// } catch (InstantiationException ex) {
// java.util.logging.Logger.getLogger(MainMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
// } catch (IllegalAccessException ex) {
// java.util.logging.Logger.getLogger(MainMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
// } catch (javax.swing.UnsupportedLookAndFeelException ex) {
// java.util.logging.Logger.getLogger(MainMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
// }
// }
// catch (Exception e){
// java.util.logging.Logger.getLogger(MainMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, e);
// }
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MainMenu().setVisible(true);
}
});
}
Тем не менее, когда я запускаю приложение, оно все равно выглядит как LF по умолчанию. Я запустил скрипт, чтобы проверить и посмотреть, какие LF я установил, и вот что я получил:
javax.swing.plaf.metal.MetalLookAndFeel
javax.swing.plaf.nimbus.NimbusLookAndFeel
com.sun.java.swing.plaf.motif.MotifLookAndFeel
com.sun.java.swing.plaf.windows.WindowsLookAndFeel
com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel
Я заметил, что в палитре дизайна есть вкладка Look and Feel. Почему там не показывается Синтетика?
1 ответ
Кажется тебе нужно позвонить UIManager.addAuxiliaryLookAndFeel(LookAndFeel)
1, прежде чем пытаться использовать его.
Добавляет
LookAndFeel
к списку вспомогательных взглядов и ощущений. Вспомогательный вид и ощущения говорят мультиплексировать внешний вид и чувствовать, что другиеLookAndFeel
классы для экземпляра компонента должны использоваться в дополнение к стандартномуLookAndFeel
класс при создании мультиплексного интерфейса. Изменения вступят в силу только при создании нового класса пользовательского интерфейса или при изменении внешнего вида по умолчанию для экземпляра компонента.