加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – JTable列标题不显示,而是’A’,’B’,

发布时间:2020-12-15 08:41:55 所属栏目:Java 来源:网络整理
导读:我是使用 Java GUI的新手,我正在努力制作一张包含我的soccerteam评分结果的表格. 起初我使用的是DefaultTableModel,我的列名没有任何问题.他们使用JScrollpane表现得很好.然后我想尝试实现我自己的TableModel,从那以后我再也看不到我的表列标题了.它们显示为
我是使用 Java GUI的新手,我正在努力制作一张包含我的soccerteam评分结果的表格.

起初我使用的是DefaultTableModel,我的列名没有任何问题.他们使用JScrollpane表现得很好.然后我想尝试实现我自己的TableModel,从那以后我再也看不到我的表列标题了.它们显示为’A’,’B’,……,’G’,而我仍在使用ScrollPane.
我需要这个TableModel因为我计划使用完全相同的结构来添加其他东西.

任何人都可以帮助我,试图解决这个问题.

谢谢

class MyTableModel extends AbstractTableModel{  
    private String[] titles;  
    private Object[][] data;

    public MyTableModel(String [] t,Object [][] d){
        this.titles = t;
        this.data   = d;
    }
    public Object getValueAt(int row,int col){
        return data[row][col];
    }
    public int getColumnCount(){
        return titles.length;
    }
    public int getRowCount(){
        return data.length;
    }
}

public static void main(String[] args) {  
    SwingUtilities.invokeLater(new Runnable() {  
        public void run() {  
            createAndShowGUI();  
        }  
    });  
}

public JPanel createContentPane(){
    mainPanel = new JPanel();
    mainPanel.setLayout(new BorderLayout(10,10));

    String [] titles = {"Naam","Doelpunten","% Doelpunten","Assists","% Assists","","% Totaal"};
    Object [][] data = new Object[spelers.size()][titles.length];
    int counter = 0;
    spelers = getSpelersFromDB("all");
    for (Iterator<Speler> iter = spelers.iterator(); iter.hasNext();){
        Speler temp = iter.next();
        data[counter][0] = temp.naam;
        data[counter][1] = temp.doelpunten;
        data[counter][2] = String.format("%3.1f %%",berekenPercentageDoelpunten(temp));
        data[counter][3] = temp.assists;
        data[counter][4] = String.format("%3.1f %%",berekenPercentageAssists(temp));
        data[counter][5] = "";
        data[counter][6] = String.format("%3.1f %%",berekenTotaalPercentage(temp));
        counter += 1;
    }

    JTable table = new JTable(new MyTableModel(titles,data));

    JScrollPane scrollPane = new JScrollPane(table);
    scrollPane.setPreferredSize(new Dimension(500,500));
    mainPanel.add(scrollPane,BorderLayout.CENTER);
    mainPanel.setOpaque(true);
    return mainPanel;
}

private static void createAndShowGUI(){
    frame.setMinimumSize(new Dimension(700,300));
    frame.setPreferredSize(new Dimension(700,500));
    frame.setMaximumSize(new Dimension(800,800));

    Voetbal demo = new Voetbal();
    frame.setContentPane(demo.createContentPane());
    frame.setJMenuBar(demo.createJMenuBar());
    frame.setVisible(true);
    frame.pack();
    frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
}

解决方法

AbstractTableModel将始终返回’A’,’B’….等作为列名(检查文档),您需要做的是覆盖getColumnName()方法,例如:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读