2013-04-30 90 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