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