Swing имеет концепцию сменного внешнего вида и ощущения . Некоторые из них выглядят и выглядят так же, как и родные компоненты Windows, GTK + и т. Д. Даже в Windows есть два разных взгляда - классический и Vista, я думаю. Может быть, вы используете разные ОС на двух ваших системах и дизайнер графического интерфейса, который автоматически настраивает внешний вид. Большинство, однако, этого не делают - по умолчанию внешний вид Metal (до Java 1.6.10) и Nimbus выглядят одинаково на всех ОС.
// build the look and feel section
final LookAndFeelInfo[] lookAndFeelInfos = UIManager.getInstalledLookAndFeels();
List<String> lookAndFeelNames = new ArrayList<String>();
lookAndFeelNames.add("System");
for (LookAndFeelInfo lookAndFeelInfo : lookAndFeelInfos) {
if (!lookAndFeelInfo.getName().equals("CDE/Motif")) {
lookAndFeelNames.add(lookAndFeelInfo.getName());
}
}
if (selectedLookAndFeel.equals("System")) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(SpellbookFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(SpellbookFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(SpellbookFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(SpellbookFrame.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
for (LookAndFeelInfo lookAndFeelInfo : lookAndFeelInfos) {
if (lookAndFeelInfo.getName().equals(selectedLookAndFeel)) {
try {
UIManager.setLookAndFeel(lookAndFeelInfo.getClassName());
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
} catch (InstantiationException e1) {
e1.printStackTrace();
} catch (IllegalAccessException e1) {
e1.printStackTrace();
} catch (UnsupportedLookAndFeelException e1) {
e1.printStackTrace();
}
}
}
}
SwingUtilities.updateComponentTreeUI(tabbedPane);
SwingUtilities.updateComponentTreeUI(parent);
Первая часть кода формирует список доступных имен внешнего вида, а вторая действует при выборе одного из них. Но так как вы всегда хотите использовать один и тот же laf, вы можете использовать что-то вроде:
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");