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. 任何人都可以帮助我,试图解决这个问题. 谢谢 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] } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |