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);
}
この問題の調査を始めたのは申し訳ありませんが、自分で見つけました。列名を表示するには、MyTableModelクラスのgetColumnNameメソッドを実装するだけでした。 –
謝罪する必要はありませんが、Fidoの回答に「正しい」とマークすることもできます。 –