Hi all,i need help about JTable.I'm using netbeans..I got a table contains PLU,nama,harga,qty,total..I use TableModelListener to listen to valueschanged in column..What i need help is how to create a new row if the user press enter key,and set focus to the first column of the next row..Thanks a lot..Here are the codes :
/*
* JualHarianFrame.java
*
*
Created on October 24, 2008, 12:58 PM
*/
package han.pos.gui;
import han.pos.dao.mysql.ProdukDAOImpl;
import han.pos.db.mysql.DBConnection;
import han.pos.model.Produk;
import java.awt.event.KeyEvent;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
/**
*
* @author yesaya
*/
public
class JualHarianFrame extends javax.swing.JInternalFrame implements TableModelListener
{
private List<Produk> Produk = new ArrayList<Produk>();
/** Creates new form JualHarianFrame */
public JualHarianFrame()
{
initComponents();
tblJual.getModel().addTableModelListener(this);
lblTotal.setText("0");
}
//this code is generated by netbeans
tblJual.setAutoCreateRowSorter(true);
tblJual.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null, null} },
new String [] {
"PLU", "NAMA", "HARGA", "QTY", "TOTAL"
} )
{ Class[] types = new Class [] {
java.lang.String.class, java.lang.String.class, java.lang.Double.class, java.lang.Integer.class, java.lang.Double.class
};
public Class getColumnClass(int columnIndex)
{
return types [columnIndex];
} }
);
tblJual.setColumnSelectionAllowed(true);
tblJual.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
tblJual.addKeyListener(new java.awt.event.KeyAdapter()
{
public void keyPressed(java.awt.event.KeyEvent evt)
{
tblJualKeyPressed(evt);
}
});
jScrollPane1.setViewportView(tblJual);
public void tableChanged(TableModelEvent e)
{
Double hrg,total=null;
int qty;
if (e.getType() == TableModelEvent.UPDATE)
{
int row = e.getFirstRow();
int column = e.getColumn();
TableModel model = (TableModel)e.getSource();
if (column==0)
{
try
{
DBConnection conn = DBConnection.getInstance();
ProdukDAOImpl dao = new ProdukDAOImpl(conn.getCon());
String plu = model.getValueAt(row, 0).toString();
Produk = dao.getPlu(plu);
for (Produk produk:Produk)
{
String nama=produk.getNama().toString();
Double harga=produk.getHarga_jual();
model.setValueAt(nama, row, 1);
model.setValueAt(harga, row, 2);
tblJual.setColumnSelectionInterval(3, 3);
}
} catch (SQLException ex)
{
Logger.getLogger(JualHarianFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
else
if (column==3){
qty=Integer.parseInt(model.getValueAt(row, 3).toString());
hrg=(Double) model.getValueAt(row, 2); total=qty*hrg;
model.setValueAt(total, row, 4);
lblTotal.setText(String.valueOf(total));
}
}
}