jdk/src/share/demo/jfc/TableExample/TableExample4.java
changeset 8979 30050c8aea19
parent 5506 202f599c92aa
child 10292 ed7db6a12c2a
--- a/jdk/src/share/demo/jfc/TableExample/TableExample4.java	Wed Mar 30 08:54:08 2011 -0700
+++ b/jdk/src/share/demo/jfc/TableExample/TableExample4.java	Wed Mar 30 08:58:02 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,8 +29,18 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- */
+
+import javax.swing.*;
+import javax.swing.table.*;
+import javax.swing.border.*;
+import java.awt.Dimension;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.Color;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.UIManager.LookAndFeelInfo;
+
 
 /**
  * Another JTable example, showing how column attributes can be refined
@@ -40,72 +50,91 @@
  *
  * @author Philip Milne
  */
-
-import javax.swing.*;
-import javax.swing.table.*;
-import javax.swing.border.*;
-
-import java.awt.Dimension;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.awt.Color;
-
 public class TableExample4 {
 
     public TableExample4() {
         JFrame frame = new JFrame("Table");
         frame.addWindowListener(new WindowAdapter() {
-            public void windowClosing(WindowEvent e) {System.exit(0);}});
+
+            @Override
+            public void windowClosing(WindowEvent e) {
+                System.exit(0);
+            }
+        });
 
         // Take the dummy data from SwingSet.
-        final String[] names = {"First Name", "Last Name", "Favorite Color",
-                                "Favorite Number", "Vegetarian"};
+        final String[] names = { "First Name", "Last Name", "Favorite Color",
+            "Favorite Number", "Vegetarian" };
         final Object[][] data = {
-            {"Mark", "Andrews", "Red", new Integer(2), Boolean.TRUE},
-            {"Tom", "Ball", "Blue", new Integer(99), Boolean.FALSE},
-            {"Alan", "Chung", "Green", new Integer(838), Boolean.FALSE},
-            {"Jeff", "Dinkins", "Turquois", new Integer(8), Boolean.TRUE},
-            {"Amy", "Fowler", "Yellow", new Integer(3), Boolean.FALSE},
-            {"Brian", "Gerhold", "Green", new Integer(0), Boolean.FALSE},
-            {"James", "Gosling", "Pink", new Integer(21), Boolean.FALSE},
-            {"David", "Karlton", "Red", new Integer(1), Boolean.FALSE},
-            {"Dave", "Kloba", "Yellow", new Integer(14), Boolean.FALSE},
-            {"Peter", "Korn", "Purple", new Integer(12), Boolean.FALSE},
-            {"Phil", "Milne", "Purple", new Integer(3), Boolean.FALSE},
-            {"Dave", "Moore", "Green", new Integer(88), Boolean.FALSE},
-            {"Hans", "Muller", "Maroon", new Integer(5), Boolean.FALSE},
-            {"Rick", "Levenson", "Blue", new Integer(2), Boolean.FALSE},
-            {"Tim", "Prinzing", "Blue", new Integer(22), Boolean.FALSE},
-            {"Chester", "Rose", "Black", new Integer(0), Boolean.FALSE},
-            {"Ray", "Ryan", "Gray", new Integer(77), Boolean.FALSE},
-            {"Georges", "Saab", "Red", new Integer(4), Boolean.FALSE},
-            {"Willie", "Walker", "Phthalo Blue", new Integer(4), Boolean.FALSE},
-            {"Kathy", "Walrath", "Blue", new Integer(8), Boolean.FALSE},
-            {"Arnaud", "Weber", "Green", new Integer(44), Boolean.FALSE}
+            { "Mark", "Andrews", "Red", new Integer(2), Boolean.TRUE },
+            { "Tom", "Ball", "Blue", new Integer(99), Boolean.FALSE },
+            { "Alan", "Chung", "Green", new Integer(838), Boolean.FALSE },
+            { "Jeff", "Dinkins", "Turquois", new Integer(8), Boolean.TRUE },
+            { "Amy", "Fowler", "Yellow", new Integer(3), Boolean.FALSE },
+            { "Brian", "Gerhold", "Green", new Integer(0), Boolean.FALSE },
+            { "James", "Gosling", "Pink", new Integer(21), Boolean.FALSE },
+            { "David", "Karlton", "Red", new Integer(1), Boolean.FALSE },
+            { "Dave", "Kloba", "Yellow", new Integer(14), Boolean.FALSE },
+            { "Peter", "Korn", "Purple", new Integer(12), Boolean.FALSE },
+            { "Phil", "Milne", "Purple", new Integer(3), Boolean.FALSE },
+            { "Dave", "Moore", "Green", new Integer(88), Boolean.FALSE },
+            { "Hans", "Muller", "Maroon", new Integer(5), Boolean.FALSE },
+            { "Rick", "Levenson", "Blue", new Integer(2), Boolean.FALSE },
+            { "Tim", "Prinzing", "Blue", new Integer(22), Boolean.FALSE },
+            { "Chester", "Rose", "Black", new Integer(0), Boolean.FALSE },
+            { "Ray", "Ryan", "Gray", new Integer(77), Boolean.FALSE },
+            { "Georges", "Saab", "Red", new Integer(4), Boolean.FALSE },
+            { "Willie", "Walker", "Phthalo Blue", new Integer(4), Boolean.FALSE },
+            { "Kathy", "Walrath", "Blue", new Integer(8), Boolean.FALSE },
+            { "Arnaud", "Weber", "Green", new Integer(44), Boolean.FALSE }
         };
 
         // Create a model of the data.
+        @SuppressWarnings("serial")
         TableModel dataModel = new AbstractTableModel() {
             // These methods always need to be implemented.
-            public int getColumnCount() { return names.length; }
-            public int getRowCount() { return data.length;}
-            public Object getValueAt(int row, int col) {return data[row][col];}
+
+            public int getColumnCount() {
+                return names.length;
+            }
+
+            public int getRowCount() {
+                return data.length;
+            }
+
+            public Object getValueAt(int row, int col) {
+                return data[row][col];
+            }
 
             // The default implementations of these methods in
             // AbstractTableModel would work, but we can refine them.
-            public String getColumnName(int column) {return names[column];}
-            public Class getColumnClass(int c) {return getValueAt(0, c).getClass();}
-            public boolean isCellEditable(int row, int col) {return true;}
+            @Override
+            public String getColumnName(int column) {
+                return names[column];
+            }
+
+            @Override
+            public Class getColumnClass(int c) {
+                return getValueAt(0, c).getClass();
+            }
+
+            @Override
+            public boolean isCellEditable(int row, int col) {
+                return true;
+            }
+
+            @Override
             public void setValueAt(Object aValue, int row, int column) {
                 System.out.println("Setting value to: " + aValue);
                 data[row][column] = aValue;
             }
-         };
+        };
 
         // Create the table
         JTable tableView = new JTable(dataModel);
-        // Turn off auto-resizing so that we can set column sizes programmatically.
-        // In this mode, all columns will get their preferred widths, as set blow.
+        // Turn off auto-resizing so that we can set column sizes
+        // programmatically. In this mode, all columns will get their preferred
+        // widths, as set blow.
         tableView.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
 
         // Create a combo box to show that you can use one in a table.
@@ -123,15 +152,18 @@
         colorColumn.setCellEditor(new DefaultCellEditor(comboBox));
 
         // Set a pink background and tooltip for the Color column renderer.
-        DefaultTableCellRenderer colorColumnRenderer = new DefaultTableCellRenderer();
+        DefaultTableCellRenderer colorColumnRenderer =
+                new DefaultTableCellRenderer();
         colorColumnRenderer.setBackground(Color.pink);
         colorColumnRenderer.setToolTipText("Click for combo box");
         colorColumn.setCellRenderer(colorColumnRenderer);
 
         // Set a tooltip for the header of the colors column.
         TableCellRenderer headerRenderer = colorColumn.getHeaderRenderer();
-        if (headerRenderer instanceof DefaultTableCellRenderer)
-            ((DefaultTableCellRenderer)headerRenderer).setToolTipText("Hi Mom!");
+        if (headerRenderer instanceof DefaultTableCellRenderer) {
+            ((DefaultTableCellRenderer) headerRenderer).setToolTipText(
+                    "Hi Mom!");
+        }
 
         // Set the width of the "Vegetarian" column.
         TableColumn vegetarianColumn = tableView.getColumn("Vegetarian");
@@ -139,9 +171,14 @@
 
         // Show the values in the "Favorite Number" column in different colors.
         TableColumn numbersColumn = tableView.getColumn("Favorite Number");
-        DefaultTableCellRenderer numberColumnRenderer = new DefaultTableCellRenderer() {
+        @SuppressWarnings("serial")
+        DefaultTableCellRenderer numberColumnRenderer
+                = new DefaultTableCellRenderer() {
+
+            @Override
             public void setValue(Object value) {
-                int cellValue = (value instanceof Number) ? ((Number)value).intValue() : 0;
+                int cellValue = (value instanceof Number) ? ((Number) value).
+                        intValue() : 0;
                 setForeground((cellValue > 30) ? Color.black : Color.red);
                 setText((value == null) ? "" : value.toString());
             }
@@ -160,6 +197,19 @@
     }
 
     public static void main(String[] args) {
+        // Trying to set Nimbus look and feel
+        try {
+            for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
+                if ("Nimbus".equals(info.getName())) {
+                    UIManager.setLookAndFeel(info.getClassName());
+                    break;
+                }
+            }
+        } catch (Exception ex) {
+            Logger.getLogger(TableExample4.class.getName()).log(Level.SEVERE,
+                    "Failed to apply Nimbus look and feel", ex);
+        }
+
         new TableExample4();
     }
 }