2013-04-30 100 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; 
     } 

    ... 

    } 

如果我不使用它的工作原理的Fe的TableModel:this.contentTable =新的JTable(S,COLUMNNAMES);,但我不知道如何更改表是否有一些新的數據...這就是我使用TableModel的原因。

我不知道爲什麼列沒有顯示,但顯示的數據...

親切的問候!

+1

這個問題不回答的,感覺就像是給我的代碼,請閱讀[神諭JTable的教程(HTTP: //docs.oracle.com/javase/tutorial/uiswing/components/table.html#data),然後用[SSCCE](http://sscce.org/)編輯你的問題,簡短,可運行,可編譯,只是JScrollPane中帶有JTable的JFrame, – mKorbel 2013-04-30 21:15:52

+0

「A」,「B」,「C」是在API中實現的默認值,當值對於JTableHeader是不可訪問的 – mKorbel 2013-04-30 21:17:17

+1

@mKorbel我做了SSCCE,但現在得到了答案,所以我不會添加它...謝謝你的提示.. – XenonUnlimited 2013-04-30 21:26:24

回答

2

在MyTableModel你需要重寫

public String getColumnName(int column) 

來回報您的數據,例如

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

你也將要重寫

getColumnCount(); 

findColumnName();

+0

啊完美謝謝你,這工作正常! – XenonUnlimited 2013-04-30 21:25:35

+0

在你的情況下,你可以使用DefaultTableModel來保存一些工作。但是,通常情況下,DefaultTableModel會發臭 - 最好是做你所做的事情並編寫你自己的AbstractTableModel的子類。 – user949300 2013-04-30 21:30:43