Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    JAVA - spostare riga di una JTable

    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?

  2. #2
    Dovresti creare un metodo che ti permette di invertire la riga sopra (o quella sotto) rispetto a quella selezionata.
    Dovresti agire sul DefaultModel direttamente.

  3. #3
    codice:
    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);
          }
    }
    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 annullata

    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?

  4. #4
    Originariamente inviato da ilc0rv0
    esempio:
    scambio la riga 0 con la riga 5
    le due righe sono scambiate
    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
    da cosa dipende?
    Il metodo setValue lo applichi direttamente al TableModel ?

    Ho scritto un paio di righe di codice , prova a vedere se possono funzionare!
    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 );
            }
        }
    Ho scritto tutti i passaggi, ma il secondo ciclo potrebbe essere inglobato nel primo.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.