سؤال

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!

هل كانت مفيدة؟

المحلول

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();

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top