Jumlah row dalam JTable dapat di ubah secara dinamis, misalnya dengan menggunakan JSpinner. Berikut adalah langkah-langkah menambahkan row dalam JTable dengan JSpinner
1. buat fungsi yang hanya menambahkan jumlah row saja dengan parameter Integer jumlah row
2. ambil jumlah kolom dalam table
3. buat array dua dimensi dengan batasan array jumlah row dan jumlah kolom
4. buat loop untuk mengusi value dari array yang telah dibuat sebelumnya
5. buat aksi di JSpinner
berikut ini adalah sourcenya
/*
* TableTest.java
*
* Created on 12 Februari 2009, 10:19
*/
package com.rizka.table;
import javax.swing.table.DefaultTableModel;
/**
* Kelas untuk mencontohkan bagaimana menambahkan row JTable dengan JSpinner
* @author Rizka Dwitama
*/
public class TableTest extends javax.swing.JFrame {
private final String[] title = new String[]{”Column 1″};
/** Creates new form TableTest */
public TableTest() {
initComponents();
}
/**
* Fungsi ini dapat menambahkan atau mengurangkan jumlah row dalam JTable.
* Tetapi value di setiap row diisi dengan null
* @param rowNum
*/
private void addReduceRows(int rowNum){
int columnCount = tableTest.getColumnCount();
String[][] data = new String[rowNum][columnCount];
for(int rowCtr=0;rowCtr<rowNum-1;rowCtr++){
for (int colCtr=0;colCtr<columnCount;colCtr++) {
data[rowCtr][colCtr] = null; // value tiap cell diisi dengan null, tetapi ini dapat diganti dengan yg lain
}
}
tableTest.setModel(new DefaultTableModel(data,title));
}
/** 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”)
//
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
tableTest = new javax.swing.JTable();
spinnerRow = new javax.swing.JSpinner();
jLabel1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle(”Table test”);
tableTest.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null},
{null},
{null},
{null}
},
new String [] {
“Column 1″
}
));
jScrollPane1.setViewportView(tableTest);
spinnerRow.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(0), Integer.valueOf(0), null, Integer.valueOf(1)));
spinnerRow.setValue(tableTest.getRowCount());
spinnerRow.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
spinnerRowStateChanged(evt);
}
});
jLabel1.setText(”Tambah & kurang row”);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 308, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel1)
.addComponent(spinnerRow, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addGap(18, 18, 18)
.addComponent(spinnerRow, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(14, Short.MAX_VALUE))
);
pack();
}//
private void spinnerRowStateChanged(javax.swing.event.ChangeEvent evt) {
// TODO add your handling code here:
int row = Integer.parseInt(spinnerRow.getValue().toString());
addReduceRows(row);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new TableTest().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JSpinner spinnerRow;
private javax.swing.JTable tableTest;
// End of variables declaration
}
