2011-07-11 30 views
3

Java GUIを使用していて、サッカーチームの得点結果でテーブルを作成しようとしています。JTableの列タイトルが表示されず、代わりに 'A'、 'B'、

最初はDefaultTableModelを使用していましたが、私のカラム名に問題はありませんでした。彼らはJScrollpaneを使って上品に見えました。それから私は自分自身のTableModelを実装しようとしていました。それ以来私はテーブルの列見出しをもう見ないようになりました。私はまだScrollPaneを使っていますが、それらは 'A'、 'B'、...、 'G'として表示されます。 私はこの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); 
} 
+0

この問題の調査を始めたのは申し訳ありませんが、自分で見つけました。列名を表示するには、MyTableModelクラスのgetColumnNameメソッドを実装するだけでした。 –

+0

謝罪する必要はありませんが、Fidoの回答に「正しい」とマークすることもできます。 –

答えて

6

はAbstractTableModelには常に、あなたが何をする必要があるか、(マニュアルを参照してください)列名としてなど... 'B'、 'A' を返しますのgetColumnName()メソッドを上書きしています次のようなものがあります。

public String getColumnName(int column) { 
     return titles[column] 
    } 
関連する問題