Question

I want to display some things in a JTable.

The problem is that the JTable columnnames are "A", "B", "C", ...

my code is like this:

import javax.swing.JTable;

public class View extends JFrame implements Observer {

    private JTable contentTable;

    public View() {
        ...

        String[][] s = {{"test","test","test", "test}};
        String[] columnNames = { "Name", "Category", "Start", "End" };
        this.contentTable = new JTable(new MyTableModel(columnNames, s));
        this.contentPanel.add(new JScrollPane(this.contentTable));

        ...
    }

}

And here is the MyTableModel class

import javax.swing.table.AbstractTableModel;

    public class MyTableModel extends AbstractTableModel {

        private String[] columnNames;
        private Object[][] data;

        public MyTableModel(String[] columns, Object[][] dat){
            this.columnNames = columns;
            this.data = dat;
        }

    ...

    }

If i don't use a TableModel it works f.e.: this.contentTable = new JTable(s, columnNames);, But i dont know how to Change the Table if there is some new Data... That's why i use a TableModel.

I don't know why the Columns aren't displayed but the data is displayed...

Kind Regards!

Was it helpful?

Solution

In MyTableModel you need to override

public String getColumnName(int column)

to return your data, e.g.

public String getColumnName(int column) {
  return columnNames[column];
}

You will also want to override

getColumnCount();

and findColumnName();

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top