2013-04-30 7 views
0

Я хочу отобразить некоторые вещи в JTable.Неверные имена столбцов JTable

Проблема заключается в том, что JTable columnnames являются "A", "B", "C", ...

мой код выглядит так:

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

     ... 
    } 

} 

А вот класс MyTableModel

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; 
     } 

    ... 

    } 

Если я не использую TableModel это работает Fe: this.contentTable = новый JTable (s, columnNames) ;, но я не знаю, как изменить таблицу, если есть какие-то новые данные ... Вот почему я использую TableModel.

Я не знаю, почему столбцы не отображаются, но отображаются данные ...

С наилучшими пожеланиями!

+1

этот вопрос не отвечает, чувствует себя вроде как дать мне код, пожалуйста, читать [оракулы JTable учебник] (HTTP: //docs.oracle.com/javase/tutorial/uiswing/components/table.html#data), а затем отредактируйте свой вопрос с помощью [SSCCE] (http://sscce.org/), короткий, выполнимый, компилируемый, просто о JFrame с JTable внутри JScrollPane, – mKorbel

+0

«A», «B», «C» - значения по умолчанию, реализованные в API, в случае, когда значение для JTableHeader не является доступным – mKorbel

+1

@mKorbel я сделал SSCCE, но получил ответ сейчас, поэтому я его не добавлю ... Спасибо за подсказку. – XenonUnlimited

ответ

2

В MyTableModel вам необходимо переопределить

public String getColumnName(int column) 

вернуть ваши данные, например,

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

Вы также хотите, чтобы переопределить

getColumnCount(); 

и findColumnName();

+0

Ahh perfect спасибо, это прекрасно работает! – XenonUnlimited

+0

В вашем случае вы, вероятно, можете использовать DefaultTableModel, чтобы сохранить небольшую работу. Но, в общем, DefaultTableModel воняет - лучше сделать то, что вы сделали, и написать собственный подкласс AbstractTableModel. – user949300

Смежные вопросы