i´m building a Swing-Gui and have an JTable object in an JScrollPane with my own TableModel. The Models nucleus is a LinkList that contains the data. I did it as LinkedList be able to insert rows as Object[] any time without replacing an 2D-Array. I wrote a method that inserts a Object[] in my LinkedList but i can´t call it from the JTable by calling the TableModel in the main-method and i don´t know why. Somebody has an idea?
public class TableModel extends AbstractTableModel {
String[] columnNames = { "Kundennummer","Firma","Nachname","Vorname","Telefonnummer","Emailadresse","Adresszeile 1","Adresszeile 2", "PLZ", "Ort", "Geburtsdatum"};
int anzahlAttribute = 11;
LinkedList<Object[]> data;
public TableModel(LinkedList<Object[]> rows){
this.data = rows;
}
@Override
public String getColumnName(int col) {
return columnNames[col].toString();
}
/**
* @see javax.swing.table.TableModel#getColumnCount()
*/
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return columnNames.length;
}
/**
* @see javax.swing.table.TableModel#getRowCount()
*/
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return data.size();
}
/**
* @see javax.swing.table.TableModel#getValueAt(int, int)
*/
@Override
public Object getValueAt(int arg0, int arg1) {
// TODO Auto-generated method stub
try{
return data.get(arg0)[arg1];
}catch(ArrayIndexOutOfBoundsException e){
return "";
}
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
@Override
public void setValueAt( Object val, int row, int column ){
data.get(row)[column] = val;
this.fireTableDataChanged();
}
public void insertRow(Object[] rowData){
this.data.add(rowData);
this.fireTableRowsInserted(data.size()-1, data.size()-1);
}
public class PaneCenter extends JScrollPane implements Panelsetter {
private static PaneCenter c;
private static JTable kundenTabelle;
private TableModel tm;
private PaneCenter(){
super();
}
/**@ Constructor
*
*
*
*
*@param arg0
*/
public PaneCenter(Component arg0) {
super(arg0);
// TODO Auto-generated constructor stub
}
public static PaneCenter getInstance(){
if(c == null){
c = new PaneCenter(kundenTabelle = new JTable());
}
return c;
}
public void setPanel(LinkedList<Object[]> data){
c.setBackground(Color.GRAY);
c.setBorder(new LineBorder(Color.black));
c.setPreferredSize(new Dimension(500,350));
c.setMinimumSize(new Dimension(500,350));
c.setMaximumSize(new Dimension(500,350));
kundenTabelle.setModel(tm = new TableModel(data));
kundenTabelle.setAutoResizeMode(0);
kundenTabelle.setSelectionMode(0);
}
public JTable getKundenTabelle() {
return kundenTabelle;
}
public TableModel getTableModel(){
return tm;
}
/**
* @see interfaces.Panelsetter#setPanel()
*/
@Override
public void setPanel() {
// TODO Auto-generated method stub
}
public class Run {
public static void main(String[] args) {
// TODO Auto-generated method stub
Object[] aa = {"1", "2", "3", "4", "5", "1", "2", "3", "4", "5", "11"}
PaneCenter.getInstance().setPanel(Bank.getCustomerDataArray())
PaneCenter.getInstance().getKundenTabelle().getModel().insertRow(aa);
Frame.getInstance().addPanels(PaneCenter.getInstance());
Frame.getInstance().setVisible(true);
}
}