Re: JTable.addRow(Vector)
In article
<6357aace-f0c6-4256-9b0f-f30dd8ec53ce@r24g2000yqd.googlegroups.com>,
RVince <rvince99@hotmail.com> wrote:
I jave a JTable on a JPanel which has a JButton to add a row to the
table -- the JButton implements actionListener, with the following
code to add the row:
Vector rowData = new Vector();
rowData.add("");
rowData.add(Double.toString(account.getDefaultallocation()));
rowData.add(Integer.toString(minlotsize));
rowData.add("0");
rowData.add("0");
rowData.add("0");
DefaultTableModel model = (AccountSlotsTableModel)
...
My table initially has NO rows. So,the first row, and all subsequent
rows, are to be created by hitting this JButton. However, when the
JButton is clicked, the try-catch catches the followign stack trace:
java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
Absent a complete example, it's hard to tell. I'm surprised that
your Vector has six elements, while your data model has eight.
At any rate, here's an example that shows a working add button:
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.util.Vector;
import javax.swing.JButton;
public class AccountSlots extends JPanel {
private final JTable table;
private final AccountSlotsTableModel model;
private static final Vector<String> rowData = new Vector<String>();
static {
rowData.add("0");
rowData.add("1");
rowData.add("2");
rowData.add("3");
rowData.add("4");
rowData.add("5");
rowData.add("6");
rowData.add("7");
}
public AccountSlots() {
super(new GridLayout(1,0));
model = new AccountSlotsTableModel();
table = new JTable(model);
JScrollPane scrollPane = new JScrollPane(table);
this.add(scrollPane);
}
class AccountSlotsTableModel extends DefaultTableModel {
private String[] columnNames = {
"component", "allocation", "minlotsize", "nmbrbreaks",
"volatility","lastdayonfile", "quantity", "avgprice"};
@Override
public int getColumnCount() {
return columnNames.length;
}
@Override
public String getColumnName(int col) {
return columnNames[col];
}
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("TableDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final AccountSlots slots = new AccountSlots();
JPanel panel = new JPanel();
JButton addBtn = new JButton("Add");
addBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
slots.model.addRow(rowData);
}
});
panel.add(addBtn);
frame.add(slots, BorderLayout.CENTER);
frame.add(panel, BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
}
}
--
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>