1 36 37 40 41 50 51 import javax.swing.*; 52 import javax.swing.table.*; 53 import javax.swing.border.*; 54 55 import java.awt.Dimension ; 56 import java.awt.event.WindowAdapter ; 57 import java.awt.event.WindowEvent ; 58 import java.awt.Color ; 59 60 public class TableExample4 { 61 62 public TableExample4() { 63 JFrame frame = new JFrame("Table"); 64 frame.addWindowListener(new WindowAdapter () { 65 public void windowClosing(WindowEvent e) {System.exit(0);}}); 66 67 final String [] names = {"First Name", "Last Name", "Favorite Color", 69 "Favorite Number", "Vegetarian"}; 70 final Object [][] data = { 71 {"Mark", "Andrews", "Red", new Integer (2), Boolean.TRUE}, 72 {"Tom", "Ball", "Blue", new Integer (99), Boolean.FALSE}, 73 {"Alan", "Chung", "Green", new Integer (838), Boolean.FALSE}, 74 {"Jeff", "Dinkins", "Turquois", new Integer (8), Boolean.TRUE}, 75 {"Amy", "Fowler", "Yellow", new Integer (3), Boolean.FALSE}, 76 {"Brian", "Gerhold", "Green", new Integer (0), Boolean.FALSE}, 77 {"James", "Gosling", "Pink", new Integer (21), Boolean.FALSE}, 78 {"David", "Karlton", "Red", new Integer (1), Boolean.FALSE}, 79 {"Dave", "Kloba", "Yellow", new Integer (14), Boolean.FALSE}, 80 {"Peter", "Korn", "Purple", new Integer (12), Boolean.FALSE}, 81 {"Phil", "Milne", "Purple", new Integer (3), Boolean.FALSE}, 82 {"Dave", "Moore", "Green", new Integer (88), Boolean.FALSE}, 83 {"Hans", "Muller", "Maroon", new Integer (5), Boolean.FALSE}, 84 {"Rick", "Levenson", "Blue", new Integer (2), Boolean.FALSE}, 85 {"Tim", "Prinzing", "Blue", new Integer (22), Boolean.FALSE}, 86 {"Chester", "Rose", "Black", new Integer (0), Boolean.FALSE}, 87 {"Ray", "Ryan", "Gray", new Integer (77), Boolean.FALSE}, 88 {"Georges", "Saab", "Red", new Integer (4), Boolean.FALSE}, 89 {"Willie", "Walker", "Phthalo Blue", new Integer (4), Boolean.FALSE}, 90 {"Kathy", "Walrath", "Blue", new Integer (8), Boolean.FALSE}, 91 {"Arnaud", "Weber", "Green", new Integer (44), Boolean.FALSE} 92 }; 93 94 TableModel dataModel = new AbstractTableModel() { 96 public int getColumnCount() { return names.length; } 98 public int getRowCount() { return data.length;} 99 public Object getValueAt(int row, int col) {return data[row][col];} 100 101 public String getColumnName(int column) {return names[column];} 104 public Class getColumnClass(int c) {return getValueAt(0, c).getClass();} 105 public boolean isCellEditable(int row, int col) {return true;} 106 public void setValueAt(Object aValue, int row, int column) { 107 System.out.println("Setting value to: " + aValue); 108 data[row][column] = aValue; 109 } 110 }; 111 112 JTable tableView = new JTable(dataModel); 114 tableView.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 117 118 JComboBox comboBox = new JComboBox(); 120 comboBox.addItem("Red"); 121 comboBox.addItem("Orange"); 122 comboBox.addItem("Yellow"); 123 comboBox.addItem("Green"); 124 comboBox.addItem("Blue"); 125 comboBox.addItem("Indigo"); 126 comboBox.addItem("Violet"); 127 128 TableColumn colorColumn = tableView.getColumn("Favorite Color"); 129 colorColumn.setCellEditor(new DefaultCellEditor(comboBox)); 131 132 DefaultTableCellRenderer colorColumnRenderer = new DefaultTableCellRenderer(); 134 colorColumnRenderer.setBackground(Color.pink); 135 colorColumnRenderer.setToolTipText("Click for combo box"); 136 colorColumn.setCellRenderer(colorColumnRenderer); 137 138 TableCellRenderer headerRenderer = colorColumn.getHeaderRenderer(); 140 if (headerRenderer instanceof DefaultTableCellRenderer) 141 ((DefaultTableCellRenderer)headerRenderer).setToolTipText("Hi Mom!"); 142 143 TableColumn vegetarianColumn = tableView.getColumn("Vegetarian"); 145 vegetarianColumn.setPreferredWidth(100); 146 147 TableColumn numbersColumn = tableView.getColumn("Favorite Number"); 149 DefaultTableCellRenderer numberColumnRenderer = new DefaultTableCellRenderer() { 150 public void setValue(Object value) { 151 int cellValue = (value instanceof Number ) ? ((Number )value).intValue() : 0; 152 setForeground((cellValue > 30) ? Color.black : Color.red); 153 setText((value == null) ? "" : value.toString()); 154 } 155 }; 156 numberColumnRenderer.setHorizontalAlignment(JLabel.RIGHT); 157 numbersColumn.setCellRenderer(numberColumnRenderer); 158 numbersColumn.setPreferredWidth(110); 159 160 JScrollPane scrollpane = new JScrollPane(tableView); 162 scrollpane.setBorder(new BevelBorder(BevelBorder.LOWERED)); 163 scrollpane.setPreferredSize(new Dimension (430, 200)); 164 frame.getContentPane().add(scrollpane); 165 frame.pack(); 166 frame.setVisible(true); 167 } 168 169 public static void main(String [] args) { 170 new TableExample4(); 171 } 172 } 173 | Popular Tags |