3636 */
3737
3838import javax .swing .JFrame ;
39+ import javax .swing .JLabel ;
3940import javax .swing .JPanel ;
4041import javax .swing .JScrollPane ;
4142import javax .swing .JTable ;
43+ import javax .swing .border .LineBorder ;
4244import javax .swing .table .AbstractTableModel ;
45+ import javax .swing .table .TableCellRenderer ;
46+
47+ import components .TableDemo .DemoColor ;
48+
49+ import java .awt .Color ;
50+ import java .awt .Component ;
4351import java .awt .Dimension ;
52+ import java .awt .Font ;
53+ import java .awt .Graphics ;
4454import java .awt .GridLayout ;
4555
4656/**
4757 * TableDemo is just like SimpleTableDemo, except that it uses a custom
4858 * TableModel.
4959 */
5060public class TableDemo extends JPanel {
61+ public class ColorRenderer extends JLabel implements TableCellRenderer {
62+
63+ @ Override
64+ public Component getTableCellRendererComponent (JTable table , Object value , boolean isSelected , boolean hasFocus ,
65+ int row , int column ) {
66+ setOpaque (true );
67+ setBackground (colors [row % 3 ]);
68+ setText (" " + row );
69+ setBorder (new LineBorder (Color .white , 3 ));
70+ return this ;
71+ }
72+
73+ public Component getComponent () {
74+ return this ;
75+ }
76+
77+ }
78+
79+ static Color [] colors = new Color [] {Color .red , Color .blue , Color .green };
80+
81+ public class DemoColor {}
82+
83+ private DemoColor color = new DemoColor ();
5184 private boolean DEBUG = false ;
5285
5386 public TableDemo () {
5487 super (new GridLayout (1 , 0 ));
5588
89+
5690 JTable table = new JTable (new MyTableModel ());
5791 table .setPreferredScrollableViewportSize (new Dimension (500 , 70 ));
5892 table .setFillsViewportHeight (true );
5993
94+ table .setDefaultRenderer (DemoColor .class , new ColorRenderer ());
95+
6096 // Create the scroll pane and add the table to it.
6197 JScrollPane scrollPane = new JScrollPane (table );
6298
@@ -65,31 +101,31 @@ public TableDemo() {
65101 }
66102
67103 class MyTableModel extends AbstractTableModel {
68- private String [] columnNames = { "Row" , "First Name" , "Last Name" , "Sport" , "# of Years" , "Vegetarian" };
104+ private String [] columnNames = { "Row" , "Fav. Color" , " First Name" , "Last Name" , "Sport" , "# of Years" , "Vegetarian" };
69105 private int i = 0 ;
70- private Object [][] data = { { ++i , "Kathy" , "Smith" , "Snowboarding" , new Integer (5 ), new Boolean (false ) },
71- { ++i , "John" , "Doe" , "Rowing" , new Integer (3 ), new Boolean (true ) },
72- { ++i , "Sue" , "Black" , "Knitting" , new Integer (2 ), new Boolean (false ) },
73- { ++i , "Jane" , "White" , "Speed reading" , new Integer (20 ), new Boolean (true ) },
74- { ++i , "John" , "Doe" , "Rowing" , new Integer (3 ), new Boolean (true ) },
75- { ++i , "Sue" , "Black" , "Knitting" , new Integer (2 ), new Boolean (false ) },
76- { ++i , "Jane" , "White" , "Speed reading" , new Integer (20 ), new Boolean (true ) },
77- { ++i , "John" , "Doe" , "Rowing" , new Integer (3 ), new Boolean (true ) },
78- { ++i , "Sue" , "Black" , "Knitting" , new Integer (2 ), new Boolean (false ) },
79- { ++i , "Jane" , "White" , "Speed reading" , new Integer (20 ), new Boolean (true ) },
80- { ++i , "John" , "Doe" , "Rowing" , new Integer (3 ), new Boolean (true ) },
81- { ++i , "Sue" , "Black" , "Knitting" , new Integer (2 ), new Boolean (false ) },
82- { ++i , "Jane" , "White" , "Speed reading" , new Integer (20 ), new Boolean (true ) },
83- { ++i , "John" , "Doe" , "Rowing" , new Integer (3 ), new Boolean (true ) },
84- { ++i , "Sue" , "Black" , "Knitting" , new Integer (2 ), new Boolean (false ) },
85- { ++i , "Jane" , "White" , "Speed reading" , new Integer (20 ), new Boolean (true ) },
86- { ++i , "John" , "Doe" , "Rowing" , new Integer (3 ), new Boolean (true ) },
87- { ++i , "Sue" , "Black" , "Knitting" , new Integer (2 ), new Boolean (false ) },
88- { ++i , "Jane" , "White" , "Speed reading" , new Integer (20 ), new Boolean (true ) },
89- { ++i , "John" , "Doe" , "Rowing" , new Integer (3 ), new Boolean (true ) },
90- { ++i , "Sue" , "Black" , "Knitting" , new Integer (2 ), new Boolean (false ) },
91- { ++i , "Jane" , "White" , "Speed reading" , new Integer (20 ), new Boolean (true ) },
92- { ++i , "Joe" , "Brown" , "Pool" , new Integer (10 ), new Boolean (false ) } };
106+ private Object [][] data = { { ++i , color , "Kathy" , "Smith" , "Snowboarding" , new Integer (5 ), new Boolean (false ) },
107+ { ++i , color , "John" , "Doe" , "Rowing" , new Integer (3 ), new Boolean (true ) },
108+ { ++i , color , "Sue" , "Black" , "Knitting" , new Integer (2 ), new Boolean (false ) },
109+ { ++i , color , "Jane" , "White" , "Speed reading" , new Integer (20 ), new Boolean (true ) },
110+ { ++i , color , "John" , "Doe" , "Rowing" , new Integer (3 ), new Boolean (true ) },
111+ { ++i , color , "Sue" , "Black" , "Knitting" , new Integer (2 ), new Boolean (false ) },
112+ { ++i , color , "Jane" , "White" , "Speed reading" , new Integer (20 ), new Boolean (true ) },
113+ { ++i , color , "John" , "Doe" , "Rowing" , new Integer (3 ), new Boolean (true ) },
114+ { ++i , color , "Sue" , "Black" , "Knitting" , new Integer (2 ), new Boolean (false ) },
115+ { ++i , color , "Jane" , "White" , "Speed reading" , new Integer (20 ), new Boolean (true ) },
116+ { ++i , color , "John" , "Doe" , "Rowing" , new Integer (3 ), new Boolean (true ) },
117+ { ++i , color , "Sue" , "Black" , "Knitting" , new Integer (2 ), new Boolean (false ) },
118+ { ++i , color , "Jane" , "White" , "Speed reading" , new Integer (20 ), new Boolean (true ) },
119+ { ++i , color , "John" , "Doe" , "Rowing" , new Integer (3 ), new Boolean (true ) },
120+ { ++i , color , "Sue" , "Black" , "Knitting" , new Integer (2 ), new Boolean (false ) },
121+ { ++i , color , "Jane" , "White" , "Speed reading" , new Integer (20 ), new Boolean (true ) },
122+ { ++i , color , "John" , "Doe" , "Rowing" , new Integer (3 ), new Boolean (true ) },
123+ { ++i , color , "Sue" , "Black" , "Knitting" , new Integer (2 ), new Boolean (false ) },
124+ { ++i , color , "Jane" , "White" , "Speed reading" , new Integer (20 ), new Boolean (true ) },
125+ { ++i , color , "John" , "Doe" , "Rowing" , new Integer (3 ), new Boolean (true ) },
126+ { ++i , color , "Sue" , "Black" , "Knitting" , new Integer (2 ), new Boolean (false ) },
127+ { ++i , color , "Jane" , "White" , "Speed reading" , new Integer (20 ), new Boolean (true ) },
128+ { ++i , color , "Joe" , "Brown" , "Pool" , new Integer (10 ), new Boolean (false ) } };
93129
94130 public int getColumnCount () {
95131 return columnNames .length ;
0 commit comments