Efectivamente, tienes que crear un diseño. Acá un ejemplo de un
JTable en un JFrame creado desde el panel de diseño e NetBeans con las funciones de agregar y eliminar filas.
Código Java:
Ver originalimport java.awt.Toolkit;
import javax.swing.table.DefaultTableModel;
public class ViewTable
extends javax.
swing.
JFrame {
//Creamos un nuevo modelo para la tabla
/** Creates new form ViewTable */
public ViewTable() {
initComponents();
jTable1.setModel(defaultTableModel);
defaultTableModel.addColumn("Codigo");
defaultTableModel.addColumn("Nombre");
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jTable1
= new javax.
swing.
JTable(); jButton1
= new javax.
swing.
JButton(); jButton2
= new javax.
swing.
JButton();
},
}
));
jScrollPane1.setViewportView(jTable1);
getContentPane
().
add(jScrollPane1, java.
awt.
BorderLayout.
CENTER);
jButton1.setText("Quitar");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) { jButton1ActionPerformed(evt);
}
});
getContentPane
().
add(jButton1, java.
awt.
BorderLayout.
PAGE_END);
jButton2.setText("Agregar");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) { jButton2ActionPerformed(evt);
}
});
getContentPane
().
add(jButton2, java.
awt.
BorderLayout.
PAGE_START);
pack();
}// </editor-fold>
private void jButton2ActionPerformed
(java.
awt.
event.
ActionEvent evt
) { // TODO add your handling code here:
defaultTableModel.
addRow(new Object[]{"",
""}); seleccionarFila(jTable1.getRowCount());
}
private void jButton1ActionPerformed
(java.
awt.
event.
ActionEvent evt
) { // TODO add your handling code here:
int filaSeleccionada = jTable1.getSelectedRow();
if (filaSeleccionada > -1 && filaSeleccionada <jTable1.getRowCount()){
defaultTableModel.removeRow(filaSeleccionada);
seleccionarFila(filaSeleccionada);
}
else
Toolkit.
getDefaultToolkit().
beep(); }
/**
* @param args the command line arguments
*/
public static void main
(String args
[]) { public void run() {
new ViewTable().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.
swing.
JButton jButton1
; private javax.
swing.
JButton jButton2
; private javax.
swing.
JTable jTable1
; // End of variables declaration
private void seleccionarFila(int filaEliminada) {
int filas = jTable1.getRowCount();
if ( filas == 1 )
jTable1.setRowSelectionInterval(0, 0);
else if (filas > 1)
jTable1.setRowSelectionInterval(filaEliminada-1, filaEliminada-1);
}
}
Presta especial atención a las líneas de código 12, 13 y 14. Ahí se le está asignando un modelo a la tabla, y luego se le agregan dos columnas. En las líneas 64 y 70, se muestran los métodos utilizados para agregar y eliminar filas. Nota que las filas se
agregan/quitan al modelo de la tabla, no a la tabla.