+
+ /**
+ * Set the best available look-and-feel into use.
+ */
+ public static void setBestLAF() {
+ /*
+ * Set the look-and-feel. On Linux, Motif/Metal is sometimes incorrectly used
+ * which is butt-ugly, so if the system l&f is Motif/Metal, we search for a few
+ * other alternatives.
+ */
+ try {
+ // Set system L&F
+ UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+
+ // Check whether we have an ugly L&F
+ LookAndFeel laf = UIManager.getLookAndFeel();
+ if (laf == null ||
+ laf.getName().matches(".*[mM][oO][tT][iI][fF].*") ||
+ laf.getName().matches(".*[mM][eE][tT][aA][lL].*")) {
+
+ // Search for better LAF
+ UIManager.LookAndFeelInfo[] info = UIManager.getInstalledLookAndFeels();
+ String lafNames[] = {
+ ".*[gG][tT][kK].*",
+ ".*[wW][iI][nN].*",
+ ".*[mM][aA][cC].*",
+ ".*[aA][qQ][uU][aA].*",
+ ".*[nN][iI][mM][bB].*"
+ };
+
+ lf: for (String lafName: lafNames) {
+ for (UIManager.LookAndFeelInfo l: info) {
+ if (l.getName().matches(lafName)) {
+ UIManager.setLookAndFeel(l.getClassName());
+ break lf;
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ System.err.println("Error setting LAF: " + e);
+ }
+ }
+
+