【问题标题】:getColumnName not working correctlygetColumnName 无法正常工作
【发布时间】:2014-07-02 18:31:28
【问题描述】:

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

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

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

【问题讨论】:

  • 不要为两个不同的表创建 TableModel。而是创建两个单独的模型。也就是说,您的模型中不应包含 tableType 变量。您也不应该有两个不同的 ArrayList。再次使用单独的模型,您将只有一个 ArrayLIst。

标签: java swing header tablemodel columnheader


【解决方案1】:

将表格添加到滚动窗格,即:new JScrollPane(table)。详情请见Adding a Table to a Container

滚动窗格会自动将表格标题放在顶部 视口。列名在顶部仍然可见 滚动表格数据时的查看区域。

如果您使用的是没有滚动窗格的表格,那么您必须获取 表头组件,自己放置。

【讨论】:

  • 是添加滚动窗格但标题不显示我不知道为什么
  • @abdelbasset 请添加显示如何将表格添加到容器的代码,最好是MCVE
  • 我解决了问题我在 jpanel 上使用表格犯了一个错误,我在滚动窗格而不是表格旁边添加了面板,现在我通过在 Jscroll 窗格本身中添加表格来修复它现在可以正常工作并感谢 camickr 重播
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2016-12-01
    • 1970-01-01
    • 2016-09-01
    • 2012-07-11
    • 2018-04-08
    • 2017-04-20
    • 2018-10-02
    • 2016-09-04
    • 2010-10-06
    相关资源
    最近更新 更多