Hi again, I tried to use a table model, but I have a runtime problem which I couldnt understand why.. The program code is ;
<blockquote>
code:
<pre name="code" class="core">
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import java.sql.*;
import java.lang.*;
class editing extends JFrame implements ActionListener
{
PreparedStatement stmt;
final String driver = "org.apache.derby.jdbc.EmbeddedDriver";
final String url = "jdbc erby atient_db";
JTable detail_table;
JTextField expense_date;
String[][] daily_details;
editing_table_model etm;
JPanel daily_details_table_panel;
public editing()
{
etm=new editing_table_model();
setDefaultCloseOperation(EXIT_ON_CLOSE);
JLabel expense_date_label=new JLabel("Harcama tarihi : ");
expense_date=new JTextField(8);
expense_date.addActionListener(this);
Action save;
save=new AbstractAction()
{
public void actionPerformed(ActionEvent e)
{
// todo
}
};
save.putValue(Action.NAME,"Kaydet");
JTable detail_table=new JTable(etm);
JScrollPane scroll=new JScrollPane(detail_table);
JPanel date_entry_panel=new JPanel(new BorderLayout());
JPanel daily_details_table_panel=new JPanel(new BorderLayout());
date_entry_panel.add(expense_date,BorderLayout.CENTER);
date_entry_panel.add(expense_date_label,BorderLayout.WEST);
daily_details_table_panel.add(scroll,BorderLayout.NORTH);
daily_details_table_panel.add(new JButton(save),BorderLayout.SOUTH);
getContentPane().add(date_entry_panel,BorderLayout.NORTH);
getContentPane().add(daily_details_table_panel,BorderLayout.CENTER);
pack();
}
public void actionPerformed(ActionEvent event)
{ //getData();
}
public void getData()
{
try
{
Class.forName(driver);
Connection c = DriverManager.getConnection(url);
PreparedStatement stmt=c.prepareStatement("SELECT * FROM daily_expense WHERE EXDATE = ?");
int date = (Integer.valueOf(expense_date.getText())).intValue();
stmt.setInt(1, date);
ResultSet results = stmt.executeQuery();
daily_details=new String[50][6];
int j=0;
while (results.next())
{
for (int i = 0; i < 5; i++)
{
daily_details[j][i] = results.getString(i+1);
}
j++;
}
}
catch (Exception e)
{
System.err.println("Got an exception! ");
System.err.println(e.getMessage());
System.err.println(e.toString());
}
JTable detail_table=new JTable(new etm());
JScrollPane scroll=new JScrollPane(detail_table);
daily_details_table_panel.add(scroll,BorderLayout.NORTH);
getContentPane().add(daily_details_table_panel,BorderLayout.CENTER);
pack();
} // getData method
public static void main(String args[])
{editing frame_instance= new editing();
frame_instance.setVisible(true);
}
} // editing class
class etm extends AbstractTableModel
{
String[][] daily_details;
String[] column_names;
public etm()
{column_names=new String[5];
daily_details=new String[50][6];
String[] column_names={"Sağlayan firma", "Harcamanın niteliği","Miktarı","Fiyatı","Tutarı"};
}
public int getColumnCount()
{return column_names.length;
}
public int getRowCount()
{ int x=5;return x;
}
public String getColumnName(int column)
{return column_names[column];
}
public String getValueAt(int row, int column)
{return daily_details[row][column];
}
public boolean isCellEditable(int row, int column)
{if (column==6) {return false;} else {return true;}
}
public void setValueAt(String new_value,int row, int column)
{daily_details[row][column]=new_value;
fireTableCellUpdated(row,column);
}
}
</pre>
</blockquote>
The runtime problem is telling that the problem comes out at one of the table model methods, getRowCount.. The runtime message is;
Exception in
thread "main" java.lang.NullPointerException
at editing_table_model.getRowCount(editing.java:114)
at javax.swing.JTable.getRowCount(Unknown Source)
... messages are a lot, but I placed here just first 3 lines..
NullPointerception is about looking for an instance variable and finding a null value, right? Just to eliminate the runtime problem I placed a constant variable x=5, but still the problem is the same..
I couldnt figure out . would you please shed some light?
Thank you all.