Fråga : Hur man löser okompatibelt typfel i TableSorter.java?

hi alla, pröva förmiddag för
i att fixa en bugga i vår existerande j2ee-applikation. det är en skrivbords- GUI app. jag öppnade det i Jdeveloper och försök till complie det, men jag fick felnågot liknande efter:
Error (148.74): okompatibla typer; funnit: klassificera java.lang. ClassNumber> som krävs: klassificera java.lang. Class
Error (169.74): okompatibla typer; funnit: klassificera java.lang. ClassNumber> som krävs: klassificera java.lang. Class

those fel uppstår i TableSorter.java, som äger rum från Sun, ta copyrightt på är 2002.

how kan mig lösa detta utfärdar? kanske jag missa ett arkiv?

thanks en lot
> för
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:
" codeBody " class= " notpretty " >/* för d2) retur 1; annars retur 0; } om annars (typ== java.util. Date.class) { Datera d1 = (datera), data.getValueAt (row1, kolonn); långt n1 = d1.getTime (); Datera d2 = (datera), data.getValueAt (row2, kolonn); lång n2 = d2.getTime (); om (n1 < n2) gå -1 tillbaka; annars, om (n1 > n2) retur 1; annan retur 0; } annars, om (typ== String.class) { Stränga s1 = ((stränga), data.getValueAt (row1, kolonnen)).toLowerCase (); Stränga s2 = ((stränga), data.getValueAt (row2, kolonnen)).toLowerCase (); int-resultat = s1.com pareTo (s2); om (resultat < 0) gå -1 tillbaka; annars, om (resultatet > 0) retur 1; annan retur 0; } annars, om (typ== Boolean.class) { Boolean bool1 = (Boolean) data.getValueAt (row1, kolonn); boolean b1 = bool1.booleanValue (); Boolean bool2 = (Boolean) data.getValueAt (row2, kolonn); boolean b2 = bool2.booleanValue (); om (b1 == b2) retur 0; , om annars (b1) // definierar falskt <, true retur 1; annars gå -1 tillbaka; } annars { Anmärka v1 = data.getValueAt (row1, kolonn); Stränga s1 = v1.toString () .toLowerCase (); Anmärka v2 = data.getValueAt (row2, kolonn); Stränga s2 = v2.toString () .toLowerCase (); int-resultat = s1.com pareTo (s2); om (resultat < 0) gå -1 tillbaka; annars, om (resultatet > 0) retur 1; annan retur 0; } } offentlig int jämför (int row1, int row2) { compares++; för (int jämn = 0; jämna < sortingColumns.size (); level++) { Heltalkolonn = (heltalet) sortingColumns.elementAt (jämna); int-resultat = compareRowsByColumn (row1, row2, column.intValue ()); om (resultat! = 0) återgångt stiga? resultat: - resultat; } retur 0; } offentliga utan laga kraft reallocateIndexes () { int-rowCount = model.getRowCount (); // ställer in en ny samling av index med rätten numrerar av beståndsdelar // för de nya datan modellerar. index = ny int [rowCount]; // initialiserar med kartlägga för identitet. för (int ror = 0; ro < rowCount; row++) index [ro], = ror; } offentligt annullera tableChanged (TableModelEvent e) { om (! att ändra) { reallocateIndexes (); // bordlägger data har ändrat. Tvinga en semesterort. sortera (detta); super.tableChanged (e); } } offentlig utan laga kraft checkModel () { om (indexes.length! = model.getRowCount ()) { System.err.println (”sorteraren som inte informeras av en ändring modellerar in. ”); } } offentligt utan laga kraft sorterar (anmärka avsändaren), { checkModel (); jämför = 0; //n2sort (); // qsort (0, indexes.length-1); shuttlesort ((int []) indexes.clone (), index, 0, indexes.length); //mysort (); } offentliga utan laga kraft n2sort () { för (int i = 0; i < getRowCount (); i++) { för (int j = i+1; j < getRowCount (); j++) { om (jämför (index [I], index [j]) == -1) { swap (I, j); } } } } // detta är ett home-grown genomförande som vi inte har haft tid // som ska forskas - den kan utföra dåligt i några omständigheter. Det // kräver två gånger utrymmet av en in-place algoritm och gör Att skicka för // NlogN assigments värderar mellan tvåna // samlingar. Numrera av jämför verkar att variera mellan N-1 och // NlogN beroende av det initialt beställer, men det huvudsakligt resonerar för // using den är här att, i motsats till qsort, den är stabil. offentlig utan laga kraft shuttlesort (int från [], int till [], låg int, int-kicken) { om (kick - låga < 2) { retur; } int-en mitt = (lowen + kicken) /2; shuttlesort (till, från, lågt, en mitt); shuttlesort (till, från, en mitt, kick); int p = lågt; int q = en mitt; /* detta är en valfri genväg; på varje recursive appell, kontrollera för att se, om beståndsdelarna i denna underdel är redan beställt. Om så, inga mer ytterligare jämförelser är nödvändiga; under-ställa i ordning kan precis kopieras. Samlingen måste kopieras ganska än tilldelade annars systerappeller i recursionstyrkan få ut ur sinc. När numrera av beståndsdelar är tre dem delas, så att den första uppsättningen, [lågt som är mitt-), har en beståndsdelen och och understödja, [som är mitt-, kick), har två. Vi hoppar over optimisation, när numrera av beståndsdelar är tre eller mindre som första jämför i ska jordbruksprodukter för det normala den sammanfogning samma ordna av kliver. Denna optimisation verkar för att vara meningsfull för delvist beställt listar, men någon analys är nödvändig finna ut hur kapaciteten tappar till Nlog (N) som det initialt beställa minskar - den kan tappa mycket snabbt. * /* om (kick - låg && för >= 4 jämför (från [middle-1], från [en mitt]) <= 0) { för (int i = lågt; i < kick; i++) { att [I] = från [I]; } retur; } **/, // A det normalasammanfogning. för (int i = lågt; i < kick; i++) { om (q->=kick || (p < mellersta && jämför (från [p], från [q]) <= 0)) { att [I] = från [p++]; } annars { att [I] = från [q++]; } } } offentlig utan laga kraft mysort () { för (int i = 0; i < indexes.length - 1; i++) { för (int j = I + 1; j < indexes.length; j++) { om (stiga) { om (jämför (index [I], index [j]) < 0) { swap (I, j); } } annars { om (jämför (index [I], index [j]) > 0) { swap (I, j); } } } } } offentligt annullera swapen (int i, int j) { int-tmp = index [I]; index [I] = index [j]; index [j] = tmp; } offentlig getIndex för int [] () { återgånga index; } // kartlägga påverkar endast tillfredsställer av datan ror. // passerar alla förfrågan till dessa ror till och med den kartlägga samlingen: ”indexerar”. allmänhet anmärker getValueAt (aRow int, int-aColumn) { checkModel (); återgång model.getValueAt ([aRow] index, aColumn); } offentlig utan laga kraft setValueAt (anmärka aValue, aRow int, int-aColumn), { checkModel (); model.setValueAt (aValue, [aRow] index, aColumn); } offentlig utan laga kraft sortByColumn (int-kolonnen) { sortByColumn (kolonnen, true); } offentlig utan laga kraft sortByColumn (int-kolonn, boolean stiga) { sortingColumn = kolonn; this.ascending = stiga; sortingColumns.removeAllElements (); sortingColumns.addElement (nytt heltal (kolonn)); sortera (detta); super.tableChanged (nya TableModelEvent (denna)); } // där är ingenstans annan att sätta denna. // tillfogar en muslyssnare till bordlägga för att starta en bordlägga sorterar //, när en kolonnöverskrift klickas i JTablen. offentligt utan laga kraft addMouseListenerToHeaderInTable (JTable bordlägger), { finalTableSorter sorterare = detta; finalJTable tableView = bordlägger; (falsk) tableView.setColumnSelectionAllowed; MouseAdapter listMouseListener = nya MouseAdapter () { offentligt annullera mouseClicked (MouseEvent e) { tableView.setCursor (nya java.awt. Markör (java.awt. Cursor.WAIT_CURSOR)); tableView.getTableHeader () .setCursor (ny java.awt. Markör (java.awt. Cursor.WAIT_CURSOR)); TableColumnModel columnModel = tableView.getColumnModel (); int-viewColumn = columnModel.getColumnIndexAtX (e.getX ()); int-kolonn = tableView.convertColumnIndexToModel (viewColumn); //if, kolonn för && för == 1 (för e.getClickCount ()! = -1) om, kolonn för && för >= 1 (för e.getClickCount ()! = -1) { shiftPressed int = e.getModifiers () &InputEvent.SHIFT_MASK; //boolean som stiger = (shiftPressed == 0); boolean stiga =, == 1 (för e.getClickCount ()); boolean redigerbara = true; att ändra = true; om, instanceof DataTableModel (för tableView.getModel ()) { redigerbart = ((DataTableModel) tableView.getModel ()).getCellEditable (); ((DataTableModel) tableView.getModel ())(riktig) .setCellEditable; } // hämtar data från modellerar Anmärka [] [] rowDataen = nytt anmärker [tableView.getModel () .getRowCount ()][tableView.getModel () .getColumnCount ()]; för (int i = 0; i < tableView.getModel () .getRowCount (); i++) { för (int 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 (); int-selectedRow = tableView.getSelectedRow (); sorter.sortByColumn (kolonn som stiger); // nu fastställda data modellerar in vid indexet för (int i = 0; i < tableView.getModel () .getRowCount (); i++) { för (int j = 0; j < tableView.getModel () .getColumnCount (); j++) { tableView.getModel () .setValueAt (rowDataen [index [I]] [j], I, j); } om (==selectedRow för index [I]) { försök { tableView.setRowSelectionInterval (I, I); } fånga (IllegalArgumentException exc) { // gör ingenting } } } om, instanceof DataTableModel (för tableView.getModel ()) { ((DataTableModel) tableView.getModel ())(redigerbara) .setCellEditable; } ändra = falskt; 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)); } }; JTableHeader th = tableView.getTableHeader (); th.addMouseListener (listMouseListener); th.setDefaultRenderer (createDefaultRenderer ()); } skyddad TableCellRenderer createDefaultRenderer () { DefaultTableCellRenderer etikett = nya DefaultTableCellRenderer () { offentligt del- getTableCellRendererComponent (JTable bordlägger, Anmärka värderar, den boolean isSelected boolean hasFocusen, int ror, int-kolonn), { om (bordlägga! = ogiltigt) { JTableHeader titelrad = table.getTableHeader (); om (titelrad! = ogiltigt) { setForeground (header.getForeground ()); setBackground (header.getBackground ()); setFont (header.getFont ()); om (kolonn==sortingColumn) { om (stiga) { försök { //setIcon (nya ImageIcon (getClass () .getResource ( // " /resources/arrowDown.gif "))); setIcon (TableHeaderIcon.getArrowDown ()); } fånga (undantag exc) { } } annars { försök { //setIcon (nya ImageIcon (getClass () .getResource ( // " /resources/arrowUp.gif "))); setIcon (TableHeaderIcon.getArrowUp ()); } fånga (undantag exc) { } } } annars { (ogiltig) setIcon; } } } setText ((värdera ogiltig ==)? "": value.toString ()); setBorder (UIManager.getBorder (”TableHeader.cellBorder”)); gå detta tillbaka; } }; label.setHorizontalAlignment (JLabel.CENTER); label.setHorizontalTextPosition (SwingConstants.LEFT); återgång etikett; } }
" klar "

Svar : Hur man löser okompatibelt typfel i TableSorter.java?

det kan vara fulländad som nedanför,

om, instanceof (för data.getValueAt (row2, kolonn) numrerar),
Andra lösningar  
 
programming4us programming4us