Giriş
Şu satırı dahil ederiz.
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
Bu sınıf normalde main metodunda çağrılır. EventQueue.invokeLater içinde çağırmaya gerek yok.
getCrossPlatformLookAndFeelClassName metodu
Şöyle
yaparız. Windows'ta "javax.swing.plaf.MetalLookAndFeel" sonucunu alırız.
String plaf = UIManager.getCrossPlatformLookAndFeelClassName();
getDefaults metodu
Şöyle
yaparız.
javax.swing.UIDefaults defaults =
UIManager.getDefaults ();
getInstalledLookAndFeels metodu
Şöyle
yaparız.
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
Benim sistemimde kurulu LookAndFeelInfo nesneleri şöyle
Metal
Nimbus
CDE/Motif
Windows
Windows Classic
Bunlardan en iyisi Nimbus. Açıklaması
şöyle. Java 5'teki XMl tabanlı "Synth Look And Feel" dan daha iyi.
Nimbus is a polished cross-platform look and feel introduced in the Java SE 6 Update 10 (6u10) release.
Nimbus'taki Vertical Scrollbar kaybolmasını gidermek için şöyle
yaparız.
LookAndFeel lookAndFeel = UIManager.getLookAndFeel();
UIDefaults defaults = lookAndFeel.getDefaults();
defaults.put("ScrollBar.minimumThumbSize", new Dimension(30, 30));
getLookAndFeel metodu
Şöyle
yaparız.
LookAndFeel lookAndFeel = UIManager.getLookAndFeel();
getLookAndFeelDefaults metodu
getSystemLookAndFeelClassName metodu
Örnek
Şöyle
yaparız. Windows'ta "com.sun.java.swing.plaf.WindowsLookAndFeel" sonucunu alırız.
String plaf = UIManager.getSystemLookAndFeelClassName();
Örnek
Şöyle
yaparız.
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException
| UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
put metodu - Object + Object
Birinci parametre key, ikinci parametre value nesnesidir.
Örnek
RadioButton arkaplan rengini değiştirmek için şöyle
yaparız.
javax.swing.UIManager.put("RadioButton.background", Color.GRAY);
Örnek
Fontların büyüklüğünü değiştirmek için şöyle
yaparız.
private static double getScaleForScreenSize() {
double screenSize = Toolkit.getDefaultToolkit().getScreenSize().getWidth();
return screenSize / 1400; //assuming app looks good at 1400
}
//source: https://stackoverflow.com/a/26877737/3992939
private static void setDefaultSize(double scale) {
Set<Object> keySet = UIManager.getLookAndFeelDefaults().keySet();
Object[] keys = keySet.toArray(new Object[keySet.size()]);
for (Object key : keys) {
if ((key != null) && key.toString().toLowerCase().contains("font")) {
Font font = UIManager.getDefaults().getFont(key);
if (font != null) {
font = font.deriveFont((float)(scale * font.getSize()));
UIManager.put(key, font);
}
}
}
}
Çağırmak için şöyle yaparız.
setDefaultSize(getScaleForScreenSize());
setLookAndFeel metodu - LookAndFeel
ÖrnekSubstance kütüphanesini kullanmak için şöyle yaparız.UIManager.setLookAndFeel(new SubstanceSaharaLookAndFeel());
Örnekİşletim sisminin kendi LookAndFeel'ini kullanmak için şöyle yaparız.UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
setLookAndFeel metodu - string
string olarak LookAndFeel metodunun class name'ini alır.
Örnek
Şöyle
yaparız.
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
Örnek
Şöyle
yaparız.
for (UIManager.LookAndFeelInfo laf: UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(laf.getName()) {
UIManager.setLookAndFeel(laf.getClassName());
SwingUtilities.updateComponentTreeUI(frame);
}
}
Örnek
Şöyle
yaparız.
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException |
UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}