java.lang.ArrayIndexOutOfBoundsException: -1...?
Hi all.
I have problem with seting data into JTable. I use net beans and my JTable is DefaultTableModel and when i put my TableModelListener my ActionListener-s to JButtons doesn't work.
i use this code:
class TML implements TableModelListener {
public void tableChanged(TableModelEvent e){
int row = jTable1.getEditingRow();
int column = jTable1.getEditingColumn();
TableModel model = jTable1.getModel();
if(row!=0 && column!=0){
jTextField1.setText( "row " + row + " column " +
column + " Value: " + model.getValueAt(row, column));
}
}
}
TableModel model = jTable1.getModel();
model.addTableModelListener(new TML());
this works good but when i push one button from my JButtons:
jButton6.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try { // Load the driver
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection c = DriverManager.getConnection
("jdbc:microsoft:sqlserver://localhost:1433;databaseName=niki;User=ektomorf;Password=niki4ko");
Statement s = c.createStatement();
// SQL code:
String sql = "SELECT * FROM events";
ResultSet out = s.executeQuery(sql);
int i=0;
TableModel model = jTable1.getModel();
for(int k=0 ; k<counter ; k++){
model.setValueAt("", k, 0);
model.setValueAt("", k, 1);
model.setValueAt("", k, 2);
model.setValueAt("", k, 3);
model.setValueAt("", k, 4);
}
while(out.next()){
int id = out.getInt("id");
String date = out.getString("date");
String hour = out.getString("hour");
String event = out.getString("event");
model.setValueAt(i+1,i,0);
model.setValueAt(date, i, 1);
model.setValueAt(hour, i, 2);
model.setValueAt(event, i, 3);
model.setValueAt(id, i, 4);
i++;
counter = i;
}
s.close(); // Also closes ResultSet
}catch(Exception ex) {
ex.printStackTrace();
}
}
i have java.lang.ArrayIndexOutOfBoundsException: -1
can you help me please?>
[2204 byte] By [
niki4koa] at [2007-11-27 7:01:48]

That's my code whit the listeners:
public class NewJFrame extends javax.swing.JFrame {
private String date;
private String hour;
private String event;
private int counter;
/** Creates new form NewJFrame */
public NewJFrame() {
initComponents();
//*************************************************************************
//Action Listeners
//Button1 ActionListener
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
date = jTextField1.getText();
hour = jTextField2.getText();
event = jTextField4.getText();
jDialog1.setVisible(true);
if(hour.equals("")) hour="";
try {
// Load the driver
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection c = DriverManager.getConnection
("jdbc:microsoft:sqlserver://localhost:1433;databaseName=niki;User=ektomorf;Password=niki4ko");
Statement s = c.createStatement();
// SQL code:
String sql = "INSERT INTO events(date, hour, event) " +
"VALUES('"+date+"','"+hour+"','"+event+"')";
s.executeQuery(sql);
s.close(); // Also closes ResultSet
} catch(Exception ex) {
ex.printStackTrace();
}
}
}
);
//Button2 ActionListener
jButton2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jTextField1.setText("");
jTextField2.setText("");
jTextField4.setText("");
}
}
);
//Button3 ActionListener
jButton3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String search_date = jTextField3.getText();
try { // Load the driver
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection c = DriverManager.getConnection
("jdbc:microsoft:sqlserver://localhost:1433;databaseName=niki;User=ektomorf;Password=niki4ko");
Statement s = c.createStatement();
// SQL code:
String sql = "SELECT * FROM events WHERE date = '"+search_date+"'";
ResultSet out = s.executeQuery(sql);
int i=0;
TableModel model = jTable1.getModel();
for(int k=0 ; k<counter ; k++){
model.setValueAt("", k, 0);
model.setValueAt("", k, 1);
model.setValueAt("", k, 2);
model.setValueAt("", k, 3);
model.setValueAt("", k, 4);
}
while(out.next()){
int id = out.getInt("id");
String date = out.getString("date");
String hour = out.getString("hour");
String event = out.getString("event");
model.setValueAt(date, i, 1);
model.setValueAt(hour, i, 2);
model.setValueAt(event, i, 3);
i++;
}
counter = i;
s.close(); // Also closes ResultSet
}catch(Exception ex) {
ex.printStackTrace();
}
}
});
//Button6 ActionListener
jButton6.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try { // Load the driver
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection c = DriverManager.getConnection
("jdbc:microsoft:sqlserver://localhost:1433;databaseName=niki;User=ektomorf;Password=niki4ko");
Statement s = c.createStatement();
// SQL code:
String sql = "SELECT * FROM events";
ResultSet out = s.executeQuery(sql);
int i=0;
TableModel model = jTable1.getModel();
for(int k=0 ; k><counter ; k++){
model.setValueAt("", k, 0);
model.setValueAt("", k, 1);
model.setValueAt("", k, 2);
model.setValueAt("", k, 3);
model.setValueAt("", k, 4);
}
while(out.next()){
int id = out.getInt("id");
String date = out.getString("date");
String hour = out.getString("hour");
String event = out.getString("event");
[b] line 161[/b]model.setValueAt(date, i, 1);
model.setValueAt(hour, i, 2);
model.setValueAt(event, i, 3);
i++;
}
counter = i;
s.close(); // Also closes ResultSet
}catch(Exception ex) {
ex.printStackTrace();
}
}
});
class TML implements TableModelListener {
public void tableChanged(TableModelEvent e){
int row = jTable1.getEditingRow();
int column = jTable1.getEditingColumn();
TableModel model = jTable1.getModel();
System.out.println( "row " + row + " column " + column
[b]line 184... [/b]+ " Value: " + model.getValueAt(row, column));
}
}
TableModel model = jTable1.getModel();
model.addTableModelListener(new TML());
}
***********************************************************************
and that's the error:
java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.Vector.elementAt(Unknown Source)
at javax.swing.table.DefaultTableModel.getValueAt(Unknown Source)
at NewJFrame$1$TML.tableChanged(NewJFrame.java:184)
at javax.swing.table.AbstractTableModel.fireTableChanged(Unknown Source)
at javax.swing.table.AbstractTableModel.fireTableCellUpdated(Unknown Source)
at javax.swing.table.DefaultTableModel.setValueAt(Unknown Source)
at NewJFrame$4.actionPerformed(NewJFrame.java:161)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
********************************************************
it happends when i push button6
null
Message was edited by:
niki4ko
Message was edited by:
niki4ko>