วันศุกร์ที่ 21 ธันวาคม พ.ศ. 2555

TableCellRendererTest (LAB 5-1)



1.import java.awt.*;
2.import java.awt.event.*;
3.import java.util.*;
4.import javax.swing.*;
5.import javax.swing.event.*;
6.import javax.swing.table.*;
7.
8.class TableCellRendererTest extends JFrame{
9. private static final int DEFAULT_WIDTH=600;
10. private static final int DEFAULT_HEIGHT=400;
11.
12. TableCellRendererTest(){
13. setTitle("Table Cell Render Test");
14. setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
15. TableModel model=new CreateTableModel();
16. JTable table=new JTable(model);
17.
18. JComboBox foodCombo=new JComboBox();
19. String[]foods={"กระเพราไก่","ข้าวผัดกุ้ง","ข้าวต้มกุ้ง","หมูทอดกระเทียม","ผัดผักรวมมิตร","แกงจืดเต้าหู้","มาม่า","ต้มยำรวมมิตร","ผัดเผ็ดปลาดุก"};
20.
21. for(int i=0;i<foods.length;i++)
22. foodCombo.addItem(foods[i]);
23.
24. //
25. TableColumnModel columnModel=table.getColumnModel();
26. TableColumn foodColumn=columnModel.getColumn(CreateTableModel.FOOD_COLUMN);
27. foodColumn.setCellEditor(new DefaultCellEditor(foodCombo));
28. foodColumn.setHeaderRenderer(table.getDefaultRenderer(ImageIcon.class));
29. foodColumn.setHeaderValue(new ImageIcon("meun.gif"));//
30.
31. //
32. table.setRowHeight(50);
33. table.setRowSelectionAllowed(false);
34. table.setDefaultRenderer(Color.class,new ColorTableCellRenderer());
35. table.setDefaultEditor(Color.class,new ColorTableCellEditor());
36. table.setForeground(Color.blue);
37.
38. add(new JScrollPane(table),BorderLayout.CENTER);
39. }
40. public static void main(String[]args){
41. JFrame frame=new TableCellRendererTest();
42. frame.addWindowListener(new WindowAdapter(){
43. public void windowClosing(WindowEvent e){
44. System.exit(0);
45. }
46. });
47. frame.setVisible(true);
48. }
49.}
50.
51.class CreateTableModel extends AbstractTableModel{
52. public static final int DAY_COLUMN=0;
53. public static final int FOOD_COLUMN=1;
54. public static final int CHECKBOX_COLUMN=2;
55. public static final int COLORPAINT_COLUMN=4;
56. private Object[][]cells={
57. {"อาทิตย์","กระเพราไก่",true,new ImageIcon("p11.gif"),Color.red},
58. {"จันทร์","ข้าวผัดกุ้ง",true,new ImageIcon("p22.gif"),Color.yellow},
59. {"อังคาร","ข้าวต้มกุ้ง",false,new ImageIcon("p33.gif"),Color.green},
60. {"พุธ","หมูทอดกระเทียม",true,new ImageIcon("p44.gif"),Color.pink},
61. {"พฤหัสบดี","ผัดผักรวมมิตร",true,new ImageIcon("p55.gif"),Color.blue},
62. {"ศุกร์","แกงจืดเต้าหู้",true,new ImageIcon("p66.gif"),Color.white},
63. {"เสาร์","มาม่า",false,new ImageIcon("p77.gif"),Color.orange}
64. };
65. private String[]columnNames={"วัน","อาหารเช้า","ใส่ไข่","รูปภาพ","สี"};
66.
67. public Object getValueAt(int r,int c){return cells[r][c];}
68. public int getColumnCount(){return cells[0].length;}
69. public int getRowCount(){return cells.length;}
70. public String getColumnName(int c){return columnNames[c];}
77. public Class getColumnClass(int c){return cells[0][c].getClass();}
78. public void setValueAt(Object obj,int r,int c){cells[r][c]=obj;}//
79.
80. public boolean isCellEditable(int r,int c){//
81. returnc==DAY_COLUMN||c==FOOD_COLUMN||c==CHECKBOX_COLUMN||c==COLORPAINT_COLUMN;
82. }
83. }//
84.
85. class ColorTableCellRenderer extends JPanel implements TableCellRenderer{
86. public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected
87. ,boolean hasFocus,int row,int column){
88. setBackground((Color)value);
89. return this;
90. }
91. }
92.
93. class ColorTableCellEditor extends AbstractCellEditor implements TableCellEditor{
94. JColorChooser colorChoose;
95. JDialog colorDialog;
96. JPanel panel;
97. public ColorTableCellEditor(){
98. panel=new JPanel();
99. colorChoose=new JColorChooser();
100. colorDialog=JColorChooser.createDialog(null,"Chooser Color",false,colorChoose,
101. new ActionListener(){//
102. public void actionPerformed(ActionEvent e){stopCellEditing();}
103. },
104. new ActionListener(){//
105. public void actionPerformed(ActionEvent e){cancelCellEditing();}
106. });
107. colorDialog.addWindowListener(new WindowAdapter(){
108. public void windowClosing(WindowEvent e){cancelCellEditing();}
109. });
110. }
111.
112. //
113. public Component getTableCellEditorComponent(JTable table,Object value,boolean isSelected
114. ,int row,int column){
115. colorChoose.setColor((Color)value);
116. return panel;
117. }
118. public Object getCellEditorValue(){
119. return colorChoose.getColor();
120. }
121.
122. //
124. public boolean shouldSelectCell(EventObject anEvent){
125 colorDialog.setVisible(true);
126. return true;
127. }
128. public void cancelCellEditing(){
129. colorDialog.setVisible(false);
130. super.cancelCellEditing();
131. }
132. public boolean stopCellEdiying(){
133. colorDialog.setVisible(false);
134. super.stopCellEditing();
135. return true;
136. }
137. };
138.









ไม่มีความคิดเห็น:

แสดงความคิดเห็น