1 import java.awt.*;
2 import java.awt.event.*;
3 import javax.swing.*;
4 import javax.swing.event.*;
5 import javax.swing.table.*;
6 import java.util.*;
7
8 public class TableEventsDemo extends JApplet {
9
10 private String[] columnNames =
11 {"Title", "Copies Needed", "Publisher", "Date Published",
12 "In-stock", "Book Photo"};
13
14
15 private ImageIcon intro1eImageIcon =
16 new ImageIcon(getClass().getResource("/image/intro1e.gif"));
17 private ImageIcon intro2eImageIcon =
18 new ImageIcon(getClass().getResource("/image/intro2e.gif"));
19 private ImageIcon intro3eImageIcon =
20 new ImageIcon(getClass().getResource("/image/intro3e.jpg"));
21
22
23 private Object[][] rowData = {
24 {"Introduction to Java Programming", 120,
25 "Que Education & Training",
26 new GregorianCalendar(1998, 1-1, 6).getTime(),
27 false, intro1eImageIcon},
28 {"Introduction to Java Programming, 2E", 220,
29 "Que Education & Training",
30 new GregorianCalendar(1999, 1-1, 6).getTime(),
31 false, intro2eImageIcon},
32 {"Introduction to Java Programming, 3E", 220,
33 "Prentice Hall",
34 new GregorianCalendar(2000, 12-1, 0).getTime(),
35 true, intro3eImageIcon},
36 };
37
38
39 private MyTableModel tableModel = new MyTableModel(
40 rowData, columnNames);
41
42
43 private JTable jTable1 = new JTable(tableModel);
44
45
46 private TableColumnModel tableColumnModel =
47 jTable1.getColumnModel();
48
49
50 private ListSelectionModel selectionModel =
51 jTable1.getSelectionModel();
52
53
54 private JTextArea jtaMessage = new JTextArea();
55
56
57 private JButton jbtDeleteColumn =
58 new JButton("Delete Selected Column");
59
60 public TableEventsDemo() {
61
62 TableColumn bookCover = jTable1.getColumn("Book Photo");
63 bookCover.setCellRenderer(new MyImageCellRenderer());
64
65
66 JComboBox jcboPublishers = new JComboBox();
67 jcboPublishers.addItem("Prentice Hall");
68 jcboPublishers.addItem("Que Education & Training");
69 jcboPublishers.addItem("McGraw-Hill");
70
71
72 TableColumn publisherColumn = jTable1.getColumn("Publisher");
73 publisherColumn.setCellEditor(
74 new DefaultCellEditor(jcboPublishers));
75
76 jTable1.setRowHeight(60);
77 jTable1.setColumnSelectionAllowed(true);
78
79 JSplitPane jSplitPane1 = new JSplitPane(
80 JSplitPane.VERTICAL_SPLIT);
81 jSplitPane1.add(new JScrollPane(jTable1), JSplitPane.LEFT);
82 jSplitPane1.add(new JScrollPane(jtaMessage), JSplitPane.RIGHT);
83 add(jbtDeleteColumn, BorderLayout.NORTH);
84 add(jSplitPane1, BorderLayout.CENTER);
85
86 tableModel.addTableModelListener(new TableModelListener() {
87 @Override
88 public void tableChanged(TableModelEvent e) {
89 jtaMessage.append("Table changed at row " +
90 e.getFirstRow() + " and column " + e.getColumn() + "\n");
91 }
92 });
93
94 tableColumnModel.addColumnModelListener(
95 new TableColumnModelListener() {
96 @Override
97 public void columnRemoved(TableColumnModelEvent e) {
98 jtaMessage.append("Column indexed at " + e.getFromIndex() +
99 " is deleted \n");
100 }
101
102 @Override
103 public void columnAdded(TableColumnModelEvent e) {
104 }
105
106 @Override
107 public void columnMoved(TableColumnModelEvent e) {
108 }
109
110 @Override
111 public void columnMarginChanged(ChangeEvent e) {
112 }
113
114 @Override
115 public void columnSelectionChanged(ListSelectionEvent e) {
116 }
117 });
118
119 jbtDeleteColumn.addActionListener(new ActionListener() {
120 @Override
121 public void actionPerformed(ActionEvent e) {
122 if (jTable1.getSelectedColumn() >= 0) {
123 TableColumnModel columnModel = jTable1.getColumnModel();
124 TableColumn tableColumn =
125 columnModel.getColumn(jTable1.getSelectedColumn());
126 columnModel.removeColumn(tableColumn);
127 }
128 }
129 });
130
131 selectionModel.addListSelectionListener(
132 new ListSelectionListener() {
133 @Override
134 public void valueChanged(ListSelectionEvent e) {
135 jtaMessage.append("Row " + jTable1.getSelectedRow() +
136 " and column " + jTable1.getSelectedColumn() +
137 " selected\n");
138 }
139 });
140 }
141
142 public static void main(String[] args) {
143 TableEventsDemo applet = new TableEventsDemo();
144 JFrame frame = new JFrame();
145 //EXIT_ON_CLOSE == 3
146 frame.setDefaultCloseOperation(3);
147 frame.setTitle("TableEventsDemo");
148 frame.getContentPane().add(applet, BorderLayout.CENTER);
149 applet.init();
150 applet.start();
151 frame.setSize(400,320);
152 Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
153 frame.setLocation((d.width - frame.getSize().width) / 2,
154 (d.height - frame.getSize().height) / 2);
155 frame.setVisible(true);
156 }
157 }