Set Nimbus as the default look and feel if it's available, otherwise fallback to the native LAF. Allow LAF to be specified with swing.defaultlaf system property.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4894 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/java/com/tigervnc/vncviewer/VncViewer.java b/java/com/tigervnc/vncviewer/VncViewer.java
index a5d15ce..26f41b6 100644
--- a/java/com/tigervnc/vncviewer/VncViewer.java
+++ b/java/com/tigervnc/vncviewer/VncViewer.java
@@ -44,6 +44,7 @@
import java.util.Iterator;
import javax.swing.*;
import javax.swing.plaf.FontUIResource;
+import javax.swing.UIManager.*;
import com.tigervnc.rdr.*;
import com.tigervnc.rfb.*;
@@ -64,14 +65,21 @@
public static void setLookAndFeel() {
try {
- String nativeLaf = UIManager.getSystemLookAndFeelClassName();
- if (nativeLaf.endsWith("WindowsLookAndFeel"))
- UIManager.setLookAndFeel(nativeLaf);
+ // Use Nimbus LookAndFeel if it's available, otherwise fallback
+ // to the native laf, or Metal if no native laf is available.
+ String laf = System.getProperty("swing.defaultlaf");
+ if (laf == null) {
+ LookAndFeelInfo[] installedLafs = UIManager.getInstalledLookAndFeels();
+ for (int i = 0; i < installedLafs.length; i++) {
+ if (installedLafs[i].getName().equals("Nimbus"))
+ laf = installedLafs[i].getClassName();
+ }
+ if (laf == null)
+ UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+ }
+ UIManager.setLookAndFeel(laf);
UIManager.put("TitledBorder.titleColor",Color.blue);
- LookAndFeel laf = UIManager.getLookAndFeel();
- if (laf == null)
- return;
- if (laf.getName().equals("Metal")) {
+ if (UIManager.getLookAndFeel().getName().equals("Metal")) {
UIManager.put("swing.boldMetal", Boolean.FALSE);
FontUIResource f = new FontUIResource("SansSerif", Font.PLAIN, 11);
java.util.Enumeration keys = UIManager.getDefaults().keys();
@@ -81,7 +89,7 @@
if (value instanceof javax.swing.plaf.FontUIResource)
UIManager.put(key, f);
}
- } else if (laf.getName().equals("Nimbus")) {
+ } else if (UIManager.getLookAndFeel().getName().equals("Nimbus")) {
FontUIResource f;
String os = System.getProperty("os.name");
if (os.startsWith("Windows")) {