ciao a tutti, ho una jtable e dovrei fare in modo che l'utente possa selezionare e spostare una riga in basso o in alto a proprio piacimento...si può fare?
ciao a tutti, ho una jtable e dovrei fare in modo che l'utente possa selezionare e spostare una riga in basso o in alto a proprio piacimento...si può fare?
Dovresti creare un metodo che ti permette di invertire la riga sopra (o quella sotto) rispetto a quella selezionata.
Dovresti agire sul DefaultModel direttamente.
![]()
ho scritto questo metodo che inverte 2 righe di una JTable tramite la pressione di un pulsante, il problema è che se faccio una sola inversione va bene, ma se provo a farne 2 consecutive, l'inversione precedente viene annullatacodice:public void scambiaRighe(int[] righeSelezionate) { for(int j=0;j<3;j++) { String temp,temp2; try { temp = new String(data[righeSelezionate[0]][j].toString()); } catch (NullPointerException e) { temp = "0"; } try { temp2 = new String(data[righeSelezionate[1]][j].toString()); } catch (NullPointerException e) { temp2 = "0"; } setValueAt(temp2,righeSelezionate[0],j); setValueAt(temp,righeSelezionate[1],j); } }
esempio:
scambio la riga 0 con la riga 5
le due righe sono scambiate
ora scambio la 1 e la 10
la 0 e la 5 tornano come erano in origine, e la 1 e la 10 vengono scambiate
da cosa dipende?![]()
![]()
![]()
A parte che una situazione del genere non é lecita, poiché se devi spostare una riga in alto o in basso puoi invertire la 4 con la 3, oppure la 5 con la 6.Originariamente inviato da ilc0rv0
esempio:
scambio la riga 0 con la riga 5
le due righe sono scambiate
Il metodo setValue lo applichi direttamente al TableModel ?Originariamente inviato da ilc0rv0
da cosa dipende?
Ho scritto un paio di righe di codice , prova a vedere se possono funzionare!
Ho scritto tutti i passaggi, ma il secondo ciclo potrebbe essere inglobato nel primo.codice:private void replace(DefaultTableModel ml, int[] row){ Vector tmp = new Vector(); for (int i=0; i<ml.getColumnCount()-1; i++){ tmp.add( ml.getValueAt(row[1], i) ); } for (int i=0; i<ml.getColumnCount()-1; i++){ ml.setValueAt( ml.getValueAt(row[0],i), row[1], i ); } for (int i=0; i<ml.getColumnCount()-1; i++){ ml.setValueAt(tmp.get(i) , row[0], i ); } }
![]()