Adding a row in JTable like MS Access
Hello!
I am trying to add a new row to the JTable which is of AbstractTable Model.
I achieved this by just returning one extra count from the method getRowCount. But I do not want to do it.
I am trying to write a method which will do this action. Can anyone help me in this please? I am actually new to the JAVA world and I need assistance in coding. Thanks for your help in advance.
Regards
Irfaan
# 5
just check this demo,
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
public class AddAndDeleteRowUsingAbstractTableModel extends JFrame implements ActionListener
{
JTabletable = null;
JButtonbtn= new JButton("Add");
JButtonbtn1 = new JButton("remove");
MyTableModel mytable;
public AddAndDeleteRowUsingAbstractTableModel()
{
mytable = new MyTableModel();
table = new JTable(mytable);
btn.addActionListener(this);
btn1.addActionListener(this);
getContentPane().add(btn1, "North");
getContentPane().add(new JScrollPane(table), "Center");
getContentPane().add(btn, "South");
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
}
public static void main(String[] args)
{
new AddAndDeleteRowUsingAbstractTableModel();
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == btn)
{
mytable.addRow();
}
else if (e.getSource() == btn1)
{
mytable.removeRow();
}
}
class MyTableModel extends AbstractTableModel
{
Vector data = new Vector();
public MyTableModel(){
Vector v= new Vector();
v.addElement("1");
v.addElement("1");
v.addElement("1");
v.addElement("1");
data.addElement(v);
}
public int getRowCount()
{
return data.size();
}
public int getColumnCount()
{
Vector v =(Vector)data.get(0);
return v.size();
}
public void addRow()
{
Vector v= new Vector();
v.addElement("1");
v.addElement("1");
v.addElement("1");
v.addElement("1");
data.addElement(v);
fireTableRowsInserted(data.size(), data.size());
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
}
public void removeRow()
{
data.remove(data.size() - 1);
fireTableRowsInserted(data.size(), data.size());
}
public Object getValueAt(int rowIndex, int columnIndex)
{
return ((Vector)data.get(rowIndex)).get(columnIndex);
}
}
}
hope it helps