author | dholmes |
Sun, 15 Sep 2019 21:00:15 -0400 | |
changeset 58142 | 24df796eef3d |
parent 47216 | 71c04702a3d5 |
permissions | -rw-r--r-- |
2 | 1 |
/* |
8979
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
2 |
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. |
2 | 3 |
* |
4 |
* Redistribution and use in source and binary forms, with or without |
|
5 |
* modification, are permitted provided that the following conditions |
|
6 |
* are met: |
|
7 |
* |
|
8 |
* - Redistributions of source code must retain the above copyright |
|
9 |
* notice, this list of conditions and the following disclaimer. |
|
10 |
* |
|
11 |
* - Redistributions in binary form must reproduce the above copyright |
|
12 |
* notice, this list of conditions and the following disclaimer in the |
|
13 |
* documentation and/or other materials provided with the distribution. |
|
14 |
* |
|
5506 | 15 |
* - Neither the name of Oracle nor the names of its |
2 | 16 |
* contributors may be used to endorse or promote products derived |
17 |
* from this software without specific prior written permission. |
|
18 |
* |
|
19 |
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS |
|
20 |
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |
|
21 |
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
|
22 |
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
|
23 |
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
|
24 |
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
|
25 |
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
|
26 |
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
|
27 |
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
|
28 |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
|
29 |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
30 |
*/ |
|
31 |
||
10292
ed7db6a12c2a
7067811: Update demo/sample code to state it should not be used for production
nloodin
parents:
8979
diff
changeset
|
32 |
/* |
ed7db6a12c2a
7067811: Update demo/sample code to state it should not be used for production
nloodin
parents:
8979
diff
changeset
|
33 |
* This source code is provided to illustrate the usage of a given feature |
ed7db6a12c2a
7067811: Update demo/sample code to state it should not be used for production
nloodin
parents:
8979
diff
changeset
|
34 |
* or technique and has been deliberately simplified. Additional steps |
ed7db6a12c2a
7067811: Update demo/sample code to state it should not be used for production
nloodin
parents:
8979
diff
changeset
|
35 |
* required for a production-quality application, such as security checks, |
ed7db6a12c2a
7067811: Update demo/sample code to state it should not be used for production
nloodin
parents:
8979
diff
changeset
|
36 |
* input validation and proper error handling, might not be present in |
ed7db6a12c2a
7067811: Update demo/sample code to state it should not be used for production
nloodin
parents:
8979
diff
changeset
|
37 |
* this sample code. |
ed7db6a12c2a
7067811: Update demo/sample code to state it should not be used for production
nloodin
parents:
8979
diff
changeset
|
38 |
*/ |
ed7db6a12c2a
7067811: Update demo/sample code to state it should not be used for production
nloodin
parents:
8979
diff
changeset
|
39 |
|
ed7db6a12c2a
7067811: Update demo/sample code to state it should not be used for production
nloodin
parents:
8979
diff
changeset
|
40 |
|
2 | 41 |
|
8979
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
42 |
import java.util.EventObject; |
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
43 |
import java.util.List; |
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
44 |
import javax.swing.JTable; |
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
45 |
import javax.swing.table.DefaultTableModel; |
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
46 |
import javax.swing.table.TableCellEditor; |
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
47 |
import javax.swing.table.TableCellRenderer; |
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
48 |
import javax.swing.table.TableColumn; |
2 | 49 |
|
50 |
||
51 |
/** |
|
52 |
* The OldJTable is an unsupported class containing some methods that were |
|
53 |
* deleted from the JTable between releases 0.6 and 0.7 |
|
54 |
*/ |
|
8979
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
55 |
@SuppressWarnings("serial") |
2 | 56 |
public class OldJTable extends JTable |
57 |
{ |
|
58 |
/* |
|
8979
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
59 |
* A new convenience method returning the index of the column in the |
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
60 |
* co-ordinate space of the view. |
2 | 61 |
*/ |
62 |
public int getColumnIndex(Object identifier) { |
|
63 |
return getColumnModel().getColumnIndex(identifier); |
|
64 |
} |
|
65 |
||
66 |
// |
|
67 |
// Methods deleted from the JTable because they only work with the |
|
68 |
// DefaultTableModel. |
|
69 |
// |
|
70 |
||
71 |
public TableColumn addColumn(Object columnIdentifier, int width) { |
|
72 |
return addColumn(columnIdentifier, width, null, null, null); |
|
73 |
} |
|
74 |
||
8979
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
75 |
public TableColumn addColumn(Object columnIdentifier, List columnData) { |
2 | 76 |
return addColumn(columnIdentifier, -1, null, null, columnData); |
77 |
} |
|
78 |
||
79 |
// Override the new JTable implementation - it will not add a column to the |
|
80 |
// DefaultTableModel. |
|
81 |
public TableColumn addColumn(Object columnIdentifier, int width, |
|
82 |
TableCellRenderer renderer, |
|
83 |
TableCellEditor editor) { |
|
84 |
return addColumn(columnIdentifier, width, renderer, editor, null); |
|
85 |
} |
|
86 |
||
87 |
public TableColumn addColumn(Object columnIdentifier, int width, |
|
88 |
TableCellRenderer renderer, |
|
8979
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
89 |
TableCellEditor editor, List columnData) { |
2 | 90 |
checkDefaultTableModel(); |
91 |
||
92 |
// Set up the model side first |
|
93 |
DefaultTableModel m = (DefaultTableModel)getModel(); |
|
8979
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
94 |
m.addColumn(columnIdentifier, columnData.toArray()); |
2 | 95 |
|
96 |
// The column will have been added to the end, so the index of the |
|
97 |
// column in the model is the last element. |
|
8979
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
98 |
TableColumn newColumn = new TableColumn( |
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
99 |
m.getColumnCount()-1, width, renderer, editor); |
2 | 100 |
super.addColumn(newColumn); |
101 |
return newColumn; |
|
102 |
} |
|
103 |
||
104 |
// Not possilble to make this work the same way ... change it so that |
|
105 |
// it does not delete columns from the model. |
|
106 |
public void removeColumn(Object columnIdentifier) { |
|
107 |
super.removeColumn(getColumn(columnIdentifier)); |
|
108 |
} |
|
109 |
||
110 |
public void addRow(Object[] rowData) { |
|
111 |
checkDefaultTableModel(); |
|
112 |
((DefaultTableModel)getModel()).addRow(rowData); |
|
113 |
} |
|
114 |
||
8979
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
115 |
public void addRow(List rowData) { |
2 | 116 |
checkDefaultTableModel(); |
8979
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
117 |
((DefaultTableModel)getModel()).addRow(rowData.toArray()); |
2 | 118 |
} |
119 |
||
120 |
public void removeRow(int rowIndex) { |
|
121 |
checkDefaultTableModel(); |
|
122 |
((DefaultTableModel)getModel()).removeRow(rowIndex); |
|
123 |
} |
|
124 |
||
125 |
public void moveRow(int startIndex, int endIndex, int toIndex) { |
|
126 |
checkDefaultTableModel(); |
|
127 |
((DefaultTableModel)getModel()).moveRow(startIndex, endIndex, toIndex); |
|
128 |
} |
|
129 |
||
130 |
public void insertRow(int rowIndex, Object[] rowData) { |
|
131 |
checkDefaultTableModel(); |
|
132 |
((DefaultTableModel)getModel()).insertRow(rowIndex, rowData); |
|
133 |
} |
|
134 |
||
8979
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
135 |
public void insertRow(int rowIndex, List rowData) { |
2 | 136 |
checkDefaultTableModel(); |
8979
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
137 |
((DefaultTableModel)getModel()).insertRow(rowIndex, rowData.toArray()); |
2 | 138 |
} |
139 |
||
140 |
public void setNumRows(int newSize) { |
|
141 |
checkDefaultTableModel(); |
|
142 |
((DefaultTableModel)getModel()).setNumRows(newSize); |
|
143 |
} |
|
144 |
||
8979
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
145 |
public void setDataVector(Object[][] newData, List columnIds) { |
2 | 146 |
checkDefaultTableModel(); |
8979
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
147 |
((DefaultTableModel)getModel()).setDataVector( |
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
148 |
newData, columnIds.toArray()); |
2 | 149 |
} |
150 |
||
151 |
public void setDataVector(Object[][] newData, Object[] columnIds) { |
|
152 |
checkDefaultTableModel(); |
|
153 |
((DefaultTableModel)getModel()).setDataVector(newData, columnIds); |
|
154 |
} |
|
155 |
||
156 |
protected void checkDefaultTableModel() { |
|
157 |
if(!(dataModel instanceof DefaultTableModel)) |
|
158 |
throw new InternalError("In order to use this method, the data model must be an instance of DefaultTableModel."); |
|
159 |
} |
|
160 |
||
161 |
// |
|
162 |
// Methods removed from JTable in the move from identifiers to ints. |
|
163 |
// |
|
164 |
||
165 |
public Object getValueAt(Object columnIdentifier, int rowIndex) { |
|
8979
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
166 |
return super.getValueAt(rowIndex, getColumnIndex(columnIdentifier)); |
2 | 167 |
} |
168 |
||
169 |
public boolean isCellEditable(Object columnIdentifier, int rowIndex) { |
|
8979
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
170 |
return super.isCellEditable(rowIndex, getColumnIndex(columnIdentifier)); |
2 | 171 |
} |
172 |
||
173 |
public void setValueAt(Object aValue, Object columnIdentifier, int rowIndex) { |
|
174 |
super.setValueAt(aValue, rowIndex, getColumnIndex(columnIdentifier)); |
|
175 |
} |
|
176 |
||
177 |
public boolean editColumnRow(Object identifier, int row) { |
|
178 |
return super.editCellAt(row, getColumnIndex(identifier)); |
|
179 |
} |
|
180 |
||
181 |
public void moveColumn(Object columnIdentifier, Object targetColumnIdentifier) { |
|
182 |
moveColumn(getColumnIndex(columnIdentifier), |
|
183 |
getColumnIndex(targetColumnIdentifier)); |
|
184 |
} |
|
185 |
||
186 |
public boolean isColumnSelected(Object identifier) { |
|
187 |
return isColumnSelected(getColumnIndex(identifier)); |
|
188 |
} |
|
189 |
||
190 |
public TableColumn addColumn(int modelColumn, int width) { |
|
191 |
return addColumn(modelColumn, width, null, null); |
|
192 |
} |
|
193 |
||
194 |
public TableColumn addColumn(int modelColumn) { |
|
195 |
return addColumn(modelColumn, 75, null, null); |
|
196 |
} |
|
197 |
||
198 |
/** |
|
199 |
* Creates a new column with <I>modelColumn</I>, <I>width</I>, |
|
200 |
* <I>renderer</I>, and <I>editor</I> and adds it to the end of |
|
201 |
* the JTable's array of columns. This method also retrieves the |
|
202 |
* name of the column using the model's <I>getColumnName(modelColumn)</I> |
|
203 |
* method, and sets the both the header value and the identifier |
|
204 |
* for this TableColumn accordingly. |
|
205 |
* <p> |
|
206 |
* The <I>modelColumn</I> is the index of the column in the model which |
|
207 |
* will supply the data for this column in the table. This, like the |
|
208 |
* <I>columnIdentifier</I> in previous releases, does not change as the |
|
209 |
* columns are moved in the view. |
|
210 |
* <p> |
|
211 |
* For the rest of the JTable API, and all of its associated classes, |
|
212 |
* columns are referred to in the co-ordinate system of the view, the |
|
213 |
* index of the column in the model is kept inside the TableColumn |
|
214 |
* and is used only to retrieve the information from the appropraite |
|
215 |
* column in the model. |
|
216 |
* <p> |
|
217 |
* |
|
218 |
* @param modelColumn The index of the column in the model |
|
219 |
* @param width The new column's width. Or -1 to use |
|
220 |
* the default width |
|
221 |
* @param renderer The renderer used with the new column. |
|
222 |
* Or null to use the default renderer. |
|
223 |
* @param editor The editor used with the new column. |
|
224 |
* Or null to use the default editor. |
|
225 |
*/ |
|
226 |
public TableColumn addColumn(int modelColumn, int width, |
|
227 |
TableCellRenderer renderer, |
|
228 |
TableCellEditor editor) { |
|
8979
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
229 |
TableColumn newColumn = new TableColumn( |
30050c8aea19
7027701: /jfc/TableExample demo needs to be improved
mrkam
parents:
5506
diff
changeset
|
230 |
modelColumn, width, renderer, editor); |
2 | 231 |
addColumn(newColumn); |
232 |
return newColumn; |
|
233 |
} |
|
234 |
||
235 |
// |
|
236 |
// Methods that had their arguments switched. |
|
237 |
// |
|
238 |
||
239 |
// These won't work with the new table package. |
|
240 |
||
241 |
/* |
|
242 |
public Object getValueAt(int columnIndex, int rowIndex) { |
|
243 |
return super.getValueAt(rowIndex, columnIndex); |
|
244 |
} |
|
245 |
||
246 |
public boolean isCellEditable(int columnIndex, int rowIndex) { |
|
247 |
return super.isCellEditable(rowIndex, columnIndex); |
|
248 |
} |
|
249 |
||
250 |
public void setValueAt(Object aValue, int columnIndex, int rowIndex) { |
|
251 |
super.setValueAt(aValue, rowIndex, columnIndex); |
|
252 |
} |
|
253 |
*/ |
|
254 |
||
255 |
public boolean editColumnRow(int columnIndex, int rowIndex) { |
|
256 |
return super.editCellAt(rowIndex, columnIndex); |
|
257 |
} |
|
258 |
||
259 |
public boolean editColumnRow(int columnIndex, int rowIndex, EventObject e){ |
|
260 |
return super.editCellAt(rowIndex, columnIndex, e); |
|
261 |
} |
|
262 |
||
263 |
||
264 |
} // End Of Class OldJTable |