1 /* Copyright (C) 2005-2011 Fabio Riccardi */
2 
3 package painting;
4 
5 //import ch.randelshofer.quaqua.QuaquaManager;
6 
7 import javax.swing.*;
8 import javax.swing.table.TableCellRenderer;
9 import java.awt.event.WindowAdapter;
10 import java.awt.*;
11 
12 /**
13  * Created by IntelliJ IDEA.
14  * User: fabio
15  * Date: Dec 4, 2005
16  * Time: 11:25:35 PM
17  * To change this template use File | Settings | File Templates.
18  */
19 public class TableTest extends WindowAdapter {
20     static String[][] data = {
21         {"a", "b", "c", "d"},
22         {"e", "f", "g", "h"},
23         {"i", "l", "m", "n"},
24         {"o", "p", "q", "r"},
25         {"a", "b", "c", "d"},
26         {"e", "f", "g", "h"},
27         {"i", "l", "m", "n"},
28         {"o", "p", "q", "r"},
29         {"a", "b", "c", "d"},
30         {"e", "f", "g", "h"},
31         {"i", "l", "m", "n"},
32         {"o", "p", "q", "r"},
33         {"a", "b", "c", "d"},
34         {"e", "f", "g", "h"},
35         {"i", "l", "m", "n"},
36         {"o", "p", "q", "r"}
37     };
38 
39     static class TablePane extends JTable {
TablePane()40         TablePane() {
41             super(data, new String[]{"1", "2", "3", "4"});
42             setCellSelectionEnabled(true);
43             setDefaultRenderer(Object.class, new ImageCellRenderer());
44         }
45 
46         static int epoch = 0;
47 
48         static class ImageCellRenderer extends JTextPane implements TableCellRenderer {
getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)49             public Component getTableCellRendererComponent(JTable table, Object value,
50                                                            boolean isSelected, boolean hasFocus,
51                                                            int row, int column) {
52                 if (row == 0 && column == 0)
53                     epoch++;
54                 System.out.println("updating (" + epoch + ") " + row + ":" + column);
55                 if (isSelected)
56                     this.setBackground(Color.gray);
57                 else
58                     setBackground(Color.white);
59                 setText((String) value);
60                 return this;
61             }
62         }
63     }
64 
TableTest()65     TableTest() {
66 //        try {
67 //            UIManager.setLookAndFeel(QuaquaManager.getLookAndFeelClassName());
68 //        } catch (Exception e) {
69 //        }
70         JFrame frame = new JFrame();
71         frame.addWindowListener(this);
72 
73         JScrollPane scrollPane = new JScrollPane(new TablePane(),
74                                                  JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
75                                                  JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
76 
77         frame.getContentPane().add(scrollPane);
78 
79         frame.pack();
80         frame.setSize(new Dimension(800, 600));
81         frame.setVisible(true);
82     }
83 
main(String[] args)84     public static void main(String[] args) {
85         new TableTest();
86     }
87 }
88