class= " lineNumbers " de
1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 :
44 :
45 :
46 :
47 :
48 :
49 :
50 :
51 :
52 :
53 :
54 :
55 :
56 :
57 :
58 :
59 :
60 :
61 :
62 :
63 :
64 :
65 :
66 :
67 :
68 :
69 :
70 :
71 :
72 :
73 :
74 :
75 :
76 :
77 :
78 :
79 :
80 :
81 :
82 :
83 :
84 :
85 :
86 :
87 :
88 :
89 :
90 :
91 :
92 :
93 :
94 :
95 :
96 :
97 :
98 :
99 :
100 :
101 :
102 :
103 :
104 :
105 :
106 :
107 :
108 :
109 :
110 :
111 :
112 :
113 :
114 :
115 :
116 :
117 :
118 :
119 :
120 :
121 :
122 :
123 :
124 :
125 :
126 :
127 :
128 :
129 :
130 :
131 :
132 :
133 :
134 :
135 :
136 :
137 :
138 :
139 :
140 :
141 :
142 :
143 :
144 :
145 :
146 :
147 :
148 :
149 :
150 :
151 :
152 :
153 :
154 :
155 :
156 :
157 :
158 :
159 :
160 :
161 :
162 :
163 :
164 :
165 :
166 :
167 :
168 :
169 :
170 :
171 :
172 :
173 :
174 :
175 :
176 :
177 :
178 :
179 :
180 :
181 :
182 :
183 :
184 :
185 :
186 :
187 :
188 :
189 :
190 :
191 :
192 :
193 :
194 :
195 :
196 :
197 :
198 :
199 :
200 :
201 :
202 :
203 :
204 :
205 :
206 :
207 :
208 :
209 :
210 :
211 :
212 :
213 :
214 :
215 :
216 :
217 :
218 :
219 :
220 :
221 :
222 :
223 :
224 :
225 :
226 :
227 :
228 :
229 :
230 :
231 :
232 :
233 :
234 :
235 :
236 :
237 :
238 :
239 :
240 :
241 :
242 :
243 :
244 :
245 :
246 :
247 :
248 :
249 :
250 :
251 :
252 :
253 :
254 :
255 :
256 :
257 :
258 :
259 :
260 :
261 :
262 :
263 :
264 :
265 :
266 :
267 :
268 :
269 :
270 :
271 :
272 :
273 :
274 :
275 :
276 :
277 :
278 :
279 :
280 :
281 :
282 :
283 :
284 :
285 :
286 :
287 :
288 :
289 :
290 :
291 :
292 :
293 :
294 :
295 :
296 :
297 :
298 :
299 :
300 :
301 :
302 :
303 :
304 :
305 :
306 :
307 :
308 :
309 :
310 :
311 :
312 :
313 :
314 :
315 :
316 :
317 :
318 :
319 :
320 :
321 :
322 :
323 :
324 :
325 :
326 :
327 :
328 :
329 :
330 :
331 :
332 :
333 :
334 :
335 :
336 :
337 :
338 :
339 :
340 :
341 :
342 :
343 :
344 :
345 :
346 :
347 :
348 :
349 :
350 :
351 :
352 :
353 :
354 :
355 :
356 :
357 :
358 :
359 :
360 :
361 :
362 :
363 :
364 :
365 :
366 :
367 :
368 :
369 :
370 :
371 :
372 :
373 :
374 :
375 :
376 :
377 :
378 :
379 :
380 :
381 :
382 :
383 :
384 :
385 :
386 :
387 :
388 :
389 :
390 :
391 :
392 :
393 :
394 :
395 :
396 :
397 :
398 :
399 :
400 :
401 :
402 :
403 :
404 :
405 :
406 :
407 :
408 :
409 :
410 :
411 :
412 :
413 :
414 :
415 :
416 :
417 :
418 :
419 :
420 :
421 :
422 :
423 :
424 :
425 :
426 :
427 :
428 :
429 :
430 :
431 :
432 :
433 :
434 :
435 :
436 :
437 :
438 :
439 :
440 :
441 :
442 :
443 :
444 :
445 :
446 :
447 :
448 :
449 :
450 :
451 :
452 :
453 :
454 :
455 :
456 :
457 :
458 :
459 :
460 :
461 :
462 :
463 :
464 :
465 :
466 :
467 :
468 :
469 :
470 :
471 :
472 :
473 :
474 :
475 :
476 :
477 :
478 :
479 :
480 :
481 :
482 :
483 :
484 :
485 :
486 :
487 :
488 :
489 :
490 :
491 :
492 :
493 :
494 :
495 :
496 :
497 :
498 :
499 :
500 :
501 :
502 :
503 :
504 :
505 :
506 :
507 :
508 :
509 :
510 :
511 :
512 :
513 :
514 :
515 :
516 :
517 :
518 :
519 :
520 :
521 :
522 :
523 :
524 :
525 :
526 :
527 :
528 :
529 :
530 :
531 :
532 :
533 :
534 :
535 :
536 :
537 :
538 :
539 :
540 :
541 :
542 :
543 :
544 :
545 :
546 :
547 :
548 :
549 :
550 :
551 :
552 :
553 :
554 :
555 :
556 :
557 :
558 :
559 :
560 :
561 :
562 :
563 :
564 :
565 :
566 :
567 :
568 :
569 :
570 :
571 :
572 :
573 :
574 :
575 :
576 :
577 :
578 :
579 :
580 :
581 :
582 :
583 :
584 :
585 :
586 :
587 :
588 :
589 :
590 :
591 :
592 :
593 :
594 :
595 :
|
class= de
class= >/* " notpretty " de l'id= " codeSnippet736807 " de d2)
retour 1 ;
autrement
retour 0 ;
}
autrement si (type == java.util. Date.class)
{
Date d1 = (date) data.getValueAt (row1, colonne) ;
long n1 = d1.getTime () ;
Dater d2 = (date) data.getValueAt (row2, colonne) ;
long N2 = d2.getTime () ;
si (n1 < N2)
renvoyer -1 ;
autrement si (n1 > N2)
retour 1 ;
retour d'autre 0 ;
}
autrement si (type == String.class)
{
Ficeler S1 = ((corde) data.getValueAt (row1, la colonne)).toLowerCase () ;
Ficelle s2 = ((corde) data.getValueAt (row2, la colonne)).toLowerCase () ;
résultat d'international = s1.com Pareto (s2) ;
si (résultat < 0)
renvoyer -1 ;
autrement si (résultat > 0)
retour 1 ;
retour d'autre 0 ;
}
autrement si (type == Boolean.class)
{
Booléen bool1 = data.getValueAt (booléen) (row1, colonne) ;
booléen b1 = bool1.booleanValue () ;
Booléen bool2 = data.getValueAt (booléen) (row2, colonne) ;
booléen b2 = bool2.booleanValue () ;
si (b1 == b2)
retour 0 ;
autrement si (b1) // définissent faux < rectifier
retour 1 ;
autrement
renvoyer -1 ;
}
autrement
{
Objet v1 = data.getValueAt (row1, colonne) ;
Ficeler S1 = v1.toString () .toLowerCase () ;
Objecter v2 = data.getValueAt (row2, colonne) ;
Ficeler s2 = v2.toString () .toLowerCase () ;
résultat d'international = s1.com Pareto (s2) ;
si (résultat < 0)
renvoyer -1 ;
autrement si (résultat > 0)
retour 1 ;
retour d'autre 0 ;
}
}
le public international compare (international row1, international row2)
{
compares++ ;
pour (niveau d'international = 0 ; niveau < sortingColumns.size () ; level++)
{
Colonne de nombre entier = (nombre entier) sortingColumns.elementAt (de niveau) ;
résultat d'international = compareRowsByColumn (row1, row2, column.intValue ());
si (résultat ! = 0)
monter de retour ? résultat : - résultat ;
}
retour 0 ;
}
reallocateIndexes vides de public ()
{
rowCount d'international = model.getRowCount () ;
// a installé un nouveau choix d'index avec le bon nombre d'éléments
// pour le nouveau modèle de données.
index = nouvel international [rowCount] ;
// initialisent avec la cartographie d'identité.
pour (rangée d'international = 0 ; rangée < rowCount ; row++)
index [rangée] = rangée ;
}
le vide de public tableChanged (TableModelEvent e)
{
si (! modification)
{
reallocateIndexes () ;
Les données de Tableau de // ont changé. Forcer une ressource.
sorte (ceci) ;
super.tableChanged (e) ;
}
}
checkModel vide de public ()
{
si (indexes.length ! = model.getRowCount ())
{
System.err.println (« trieuse non informée d'un changement de model.") ;
}
}
sorte vide de public (expéditeur d'objet)
{
checkModel () ;
compare = 0 ;
//n2sort () ;
qsort de // (0, indexes.length-1) ;
shuttlesort ((international []) indexes.clone (), index, 0, indexes.length) ;
//mysort () ;
}
public n2sort vides ()
{
pour (international i = 0 ; i < getRowCount () ; i++)
{
pour (international j = i+1 ; j < getRowCount () ; j++)
{
si (comparer (index [I], index [j]) == -1)
{
permuter (I, j) ;
}
}
}
}
// ceci est une exécution du pays que nous n'avons pas eu le temps
// à la recherche - elle peut exécuter mal dans quelques circonstances. Il
// exige deux fois l'espace d'un algorithme sur place et le fait
Assigments de // NlogN faisant la navette les valeurs entre les deux
rangées de //. Le nombre de compare semble varier entre N-1 et
// NlogN selon l'ordre initial mais la raison principale de
// using ce voici que, à la différence de qsort, il est stable.
shuttlesort vide de public (international de [], international à [], international bas, international haut)
{
si (< 2) haut-bas
{
retour ;
}
milieu d'international = (le bas + haut) /2 ;
shuttlesort (à, de, bas, moyen) ;
shuttlesort (à, de, milieu, hauts) ;
international p = bas ;
international q = milieu ;
/* ceci est un raccourci facultatif ; à chaque appel récursif,
vérifier pour voir si les éléments dans ce sous-ensemble sont déjà
passé commande. Si oui, aucune autre comparaison n'est nécessaire ;
secondaire-ranger peut juste être copié. La rangée doit être copiée plutôt
qu'autrement assignés des appels de soeur dans la récursion pourrait
sortir du sinc. Quand le nombre d'éléments est trois ils
sont divisés de sorte que le premier ensemble, [bas, mi), ait un
l'élément et et la seconde, [mi, haut), a deux. Nous sautons
optimisation quand le nombre d'éléments est trois ou moins As
les premiers comparent dans la fusion normale produiront la même chose
ordre des étapes. Cette optimisation semble être valable
pour partiellement des listes numérotées mais une certaine analyse est nécessaire
découvrir comment l'exécution chute à Nlog (N) comme initiale
l'ordre diminue - il peut chuter très rapidement. *
/*
si (&& haut-bas de >= 4 comparent (de [middle-1], de [milieu]) <= 0)
{
pour (international i = bas ; i < haut ; i++)
{
[I] = de [I] ;
}
retour ;
}
**/
Fusion normale de // A.
pour (international i = bas ; i < haut ; i++)
{
si (>= de q haut || (p < && moyen comparent (de [p], de [q]) le <= 0))
{
[I] = de [p++] ;
}
autrement
{
[I] = de [q++] ;
}
}
}
mysort vide de public ()
{
pour (international i = 0 ; i < indexes.length - 1 ; i++)
{
pour (international j = I + 1 ; j < indexes.length ; j++)
{
si (montant)
{
si (comparer (index [I], index [j]) < 0)
{
permuter (I, j) ;
}
}
autrement
{
si (comparer (index [I], index [j]) > 0)
{
permuter (I, j) ;
}
}
}
}
}
échange de vide de public (international i, international j)
{
tmp d'international = index [I] ;
index [I] = index [j] ;
index [j] = tmp ;
}
getIndex du public international [] ()
{
index de retour ;
}
// la cartographie affecte seulement le contenu des rangées de données.
Passage de // toutes les demandes à ces rangées par la rangée de cartographie : « indexe ».
getValueAt public d'objet (international aRow, aColumn d'international)
{
checkModel () ;
model.getValueAt de retour (index [aRow], aColumn) ;
}
setValueAt vide de public (aValue d'objet, international aRow, aColumn d'international)
{
checkModel () ;
model.setValueAt (aValue, index [aRow], aColumn) ;
}
sortByColumn vide de public (colonne d'international)
{
sortByColumn (la colonne, rectifient) ;
}
sortByColumn vide de public (colonne d'international, monter booléen)
{
sortingColumn = colonne ;
this.ascending = montant ;
sortingColumns.removeAllElements () ;
sortingColumns.addElement (nouveau nombre entier (colonne));
sorte (ceci) ;
super.tableChanged (nouveau TableModelEvent (ceci));
}
// là est nulle part d'autre pour mettre ceci.
// ajoutent un auditeur de souris au Tableau pour déclencher une sorte de table
// quand une en-tête de colonne est cliquée dans le JTable.
addMouseListenerToHeaderInTable vide de public (table de JTable)
{
trieuse finale de TableSorter = ceci ;
tableView = table finaux de JTable ;
tableView.setColumnSelectionAllowed (faux) ;
listMouseListener de MouseAdapter = nouveau MouseAdapter ()
{
le vide de public mouseClicked (MouseEvent e)
{
tableView.setCursor (nouveau java.awt. Curseur (java.awt. Cursor.WAIT_CURSOR));
tableView.getTableHeader () .setCursor (nouveau java.awt. Curseur (java.awt. Cursor.WAIT_CURSOR));
columnModel de TableColumnModel = tableView.getColumnModel () ;
viewColumn d'international = columnModel.getColumnIndexAtX (e.getX ());
colonne d'international = tableView.convertColumnIndexToModel (viewColumn) ;
//if colonne de && de == 1 (d'e.getClickCount () ! = -1)
si colonne de && de >= 1 (d'e.getClickCount () ! = -1)
{
international shiftPressed = e.getModifiers () &InputEvent.SHIFT_MASK ;
//boolean montant = (== shiftPressed 0) ;
monter booléen = == (d'e.getClickCount () 1) ;
editable booléens = rectifient ;
la modification = rectifient ;
s'instanceof DataTableModel (de tableView.getModel ())
{
editable = ((DataTableModel) tableView.getModel ()).getCellEditable () ;
((DataTableModel) tableView.getModel ()).setCellEditable (vrai) ;
}
// recherchent des données du modèle
Objecter [] [] rowData = nouvel objet [tableView.getModel () .getRowCount ()][tableView.getModel () .getColumnCount ()];
pour (international i = 0 ; i < tableView.getModel () .getRowCount () ; i++)
{
pour (international j = 0 ; j < tableView.getModel () .getColumnCount () ; j++)
{
rowData [I] [j] = tableView.getModel () .getValueAt (I, j) ;
//System.out.print (rowData [I] [j] + « ") ;
}
System.out.println () ;
}
reallocateIndexes () ;
selectedRow d'international = tableView.getSelectedRow () ;
sorter.sortByColumn (colonne, montant) ;
// placent maintenant des données dans le modèle par index
pour (international i = 0 ; i < tableView.getModel () .getRowCount () ; i++)
{
pour (international j = 0 ; j < tableView.getModel () .getColumnCount () ; j++)
{
tableView.getModel () .setValueAt (rowData [index [I]] [j], I, j) ;
}
si (selectedRow de == d'index [I])
{
essai
{
tableView.setRowSelectionInterval (I, i) ;
}
crochet (IllegalArgumentException excepté)
{
// ne font rien
}
}
}
s'instanceof DataTableModel (de tableView.getModel ())
{
((DataTableModel) tableView.getModel ()).setCellEditable (editable) ;
}
modification = faux ;
tableView.validate () ;
}
tableView.getTableHeader () .repaint () ;
tableView.setCursor (java.awt. Cursor.getPredefinedCursor (java.awt. Cursor.DEFAULT_CURSOR));
tableView.getTableHeader () .setCursor (java.awt. Cursor.getPredefinedCursor (java.awt. Cursor.DEFAULT_CURSOR));
}
} ;
Th de JTableHeader = tableView.getTableHeader () ;
th.addMouseListener (listMouseListener) ;
th.setDefaultRenderer (createDefaultRenderer ());
}
createDefaultRenderer protégé de TableCellRenderer ()
{
Étiquette de DefaultTableCellRenderer =
nouveau DefaultTableCellRenderer ()
{
getTableCellRendererComponent composant public (table de JTable,
Objecter la valeur, hasFocus isSelected et booléen booléen,
rangée d'international, colonne d'international)
{
si (table ! = nulle)
{
En-tête de JTableHeader = table.getTableHeader () ;
si (en-tête ! = nulle)
{
setForeground (header.getForeground ());
setBackground (header.getBackground ());
setFont (header.getFont ());
si (sortingColumn de == de colonne)
{
si (montant)
{
essai
{
//setIcon (nouvel ImageIcon (getClass () .getResource (
// " /resources/arrowDown.gif ")));
setIcon (TableHeaderIcon.getArrowDown ());
}
crochet (exception excepté)
{
}
} autrement
{
essai
{
//setIcon (nouvel ImageIcon (getClass () .getResource (
// " /resources/arrowUp.gif ")));
setIcon (TableHeaderIcon.getArrowUp ());
}
crochet (exception excepté)
{
}
}
} autrement
{
setIcon (nulle) ;
}
}
}
setText ((nulle de == de valeur) ? "" : value.toString ());
setBorder (UIManager.getBorder (« TableHeader.cellBorder »));
renvoyer ceci ;
}
} ;
label.setHorizontalAlignment (JLabel.CENTER) ;
label.setHorizontalTextPosition (SwingConstants.LEFT) ;
étiquette de retour ;
}
}
|