getColumnName无法正常工作

时间:2014-07-02 18:31:29

标签: java swing header tablemodel columnheader

我正在使用TableModel扩展AbstractTableModel的新类,但是当我尝试添加标题行时,它没有显示。这是代码:

 public class StudentTableModel extends AbstractTableModel {

    private ArrayList<Student> student;
    private ArrayList<Group> groups;
    private int tableType=2;
    public String []coluNamess = {
                                    "id","name",
                                    "last name",
                                    " birth date",
                                    "phone","adress",
                                    "class"
                                 };
    public String  []coluNamesg = {
                                    "id","title",
                                    "level","num"
                                  };

    public String getColumnName(int column ) {
        if(tableType==1) {
            return this.coluNamess[column];
        } else {
            return this.coluNamesg[column];
        } 
    }

    public int getColumnCount() {
        if(tableType==1) {
            return 7;
        } else {
            return 4;
        }
    }

    public int getRowCount() {
        if(tableType==1) { 
            return student.size();
        } else {
            return groups.size();
        }
    }

    public String getValueAt(int row, int colu) {
        if(tableType==1) {
            Student studentm=student.get(row);
            switch(colu) {
                case 0:
                    return  Double.toString((double)studentm.getId());
                case 1:
                    return studentm.getFname();
                case 2:
                    return studentm.getLname();
                case 3:
                    return studentm.getB_date();
                case 4:
                    return studentm.getPhone();
                case 5:
                    return studentm.getAdress();
                case 6:
                    return Double.toString((double)studentm.getGroupId());
            }
        } else if(tableType==2) {
            Group group=groups.get(row);
            switch(colu) {
                case 0:
                    return  Double.toString((double)group.getId());
                case 1:
                    return  group.getTitle();
                case 2:
                    return  group.getLevel();
                case 3:
                    return  Double.toString((double)group.getTime());
            }
        }  
        return null;
    }

    public void setStudent(ArrayList<Student> students) {
        this.student= students;
    }

    public void setGroup(ArrayList<Group> groups) {
        this.groups= groups;
    }

    public void setType(int type) {
        this.tableType=type;
    }
}

标题未显示但显示内容。我不知道问题出在哪里!!!!

2 个答案:

答案 0 :(得分:2)

将表添加到滚动窗格,即:new JScrollPane(table)。有关详细信息,请参阅Adding a Table to a Container

  

滚动窗格会自动将表头放在顶部   视口。列名称仍然显示在顶部   滚动表格数据时查看区域。

     

如果您使用的是没有滚动窗格的表格,那么您必须得到   表头组件并自行放置。

答案 1 :(得分:0)

当我在将mt面板添加到主面板时使用滚动方法时,我在表中添加了表格模型,并将该表添加到面板中并将该面板添加到主面板中;结果是我的标题没有出现;将表格添加到面板中并解决问题后,使用滚动功能解决了我的问题。