2014-05-05 12 views
5

Voglio rimuovere una riga selezionata da una tabella in java. L'evento dovrebbe essere eseguito al clic del pulsante. Sarò grazie pieno se qualcuno aiuta ...rimuovere una riga selezionata da un prospetto sul pulsante clic su

Ad esempio, c'è una tabella denominata sub_table con 3 colonne i.e sub_id, sub_name, class. quando seleziono una delle righe da quella tabella e clicchiamo sul pulsante Elimina quella particolare riga dovrebbe essere cancellata ..

+1

Soooooo ..... nessun codice? –

+0

possibile duplicato di [questo] (http://stackoverflow.com/questions/1117888/how-to-remove-a-row-from-jtable) uno. – Parasu

+0

no ... sono completamente stucked plz help – kdubey007

risposta

6

È molto semplice.

  • Aggiungi ActionListener sul pulsante.
  • Rimuovi la riga selezionata dal modello allegato alla tabella. Codice

Esempio: (tabella che ha 2 colonne)

Object[][] data = { { "1", "Book1" }, { "2", "Book2" }, { "3", "Book3" }, 
        { "4", "Book4" } }; 

String[] columnNames = { "ID", "Name" }; 
final DefaultTableModel model = new DefaultTableModel(data, columnNames); 

final JTable table = new JTable(model); 
table.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); 


JButton button = new JButton("delete"); 
button.addActionListener(new ActionListener() { 

    @Override 
    public void actionPerformed(ActionEvent arg0) { 
     // check for selected row first 
     if (table.getSelectedRow() != -1) { 
      // remove selected row from the model 
      model.removeRow(table.getSelectedRow()); 
     } 
    } 
}); 
+1

Non vale niente che l'indice "vista" dato da 'table.getSelectedRow()' non sia sempre lo stesso dell'indice "modello". Ad esempio, se la tabella è ordinata, tutti gli indici potrebbero essere diversi. Puoi convertire l'indice da 'getSelectedRow()' all'indice del modello con ['table.convertRowIndexToModel (int index)'] (https://docs.oracle.com/javase/8/docs/api/javax/swing/ JTable.html # convertRowIndexToModel-INT). – cubrr

+0

@cubrr si hai ragione. Grazie per averlo corretto. – Braj