我不确定要问这个问题的标题,所以希望没有人会感到困惑...
我有一个按钮,当单击该按钮时,会将Player对象的ArrayList中每个“ Player”对象的属性添加到JTable中。目前,我的ArrayList中有500个“玩家”,并且希望显示100行(因为似乎限制为100行-如果我知道如何为下一个/上一个10行做按钮,我会那)。当转到JTabbedPane中的相应选项卡并单击按钮时,我只看到10行数据-我想看到100行数据并向下滚动以查看其余部分。我已经将JTable放在JScrolledPane中。
这是我按钮的actionListener中的代码:
private void getAllPlayersBtnActionPerformed(java.awt.event.ActionEvent evt) {
for(int i = 0; i < players.size(); i++)
{
playersDataTable.setValueAt(players.get(i).getPlayerID(), i, 0);
playersDataTable.setValueAt(players.get(i).getPlayerName(), i, 1);
playersDataTable.setValueAt(players.get(i).getCountryName(), i, 2);
playersDataTable.setValueAt(players.get(i).getCareerSpan(), i, 3);
playersDataTable.setValueAt(players.get(i).getMatchesPlayed(), i, 4);
playersDataTable.setValueAt(players.get(i).getInningsPlayed(), i, 5);
playersDataTable.setValueAt(players.get(i).getBallsBowled(), i, 6);
playersDataTable.setValueAt(players.get(i).getRunsConceded(), i, 7);
playersDataTable.setValueAt(players.get(i).getWicketsTaken(), i, 8);
playersDataTable.setValueAt(players.get(i).getBowlingAverage(), i, 9);
playersDataTable.setValueAt(players.get(i).getEconomyRate(), i, 10);
playersDataTable.setValueAt(players.get(i).getStrikeRate(), i, 11);
playersDataTable.setValueAt(players.get(i).getFiveWicketsInnings(), i, 12);
}
}
编辑:这是一些额外的代码,可能会有所帮助。这些代码大部分是由NetBeans自动创建的-我试图进行一些自定义编辑。
我的scrolledPane的代码
tableScrollPane = new javax.swing.JScrollPane();
tableScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
tableScrollPane.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
// Code of sub-components and layout - not shown here
// Code adding the component to the parent container - not shown here
JTable的代码:
playersDataTable = new javax.swing.JTable();
playersDataTable.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(153, 204, 255), 2));
playersDataTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
//NOTE: There were 100 of these, but deleted some to truncate this code
{null, null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null, null}
},
new String [] {
"ID", "Player Name", "Country", "Career Span", "Matches Played", "Innings Played", "Balls Bowled", "Runs Conceded", "Wickets Taken", "Bowling Average", "Economy Rate", "Strike Rate", "5 Wickets/Innings"
}
) {
Class[] types = new Class [] {
java.lang.Integer.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Integer.class, java.lang.Integer.class, java.lang.Integer.class, java.lang.Integer.class, java.lang.Integer.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class, java.lang.Integer.class
};
boolean[] canEdit = new boolean [] {
false, false, false, false, false, false, false, false, false, false, false, false, false
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
playersDataTable.setPreferredSize(new java.awt.Dimension(700, 160));
playersDataTable.getTableHeader().setResizingAllowed(false);
playersDataTable.getTableHeader().setReorderingAllowed(false);
playersDataTable.setUpdateSelectionOnSort(false);
tableScrollPane.setViewportView(playersDataTable);
playersDataTable.getColumnModel().getColumn(0).setResizable(false);
playersDataTable.getColumnModel().getColumn(0).setPreferredWidth(20);
playersDataTable.getColumnModel().getColumn(1).setResizable(false);
playersDataTable.getColumnModel().getColumn(2).setResizable(false);
playersDataTable.getColumnModel().getColumn(3).setResizable(false);
playersDataTable.getColumnModel().getColumn(3).setPreferredWidth(50);
playersDataTable.getColumnModel().getColumn(4).setResizable(false);
playersDataTable.getColumnModel().getColumn(4).setPreferredWidth(60);
playersDataTable.getColumnModel().getColumn(5).setResizable(false);
playersDataTable.getColumnModel().getColumn(5).setPreferredWidth(60);
playersDataTable.getColumnModel().getColumn(6).setResizable(false);
playersDataTable.getColumnModel().getColumn(6).setPreferredWidth(50);
playersDataTable.getColumnModel().getColumn(7).setResizable(false);
playersDataTable.getColumnModel().getColumn(7).setPreferredWidth(60);
playersDataTable.getColumnModel().getColumn(8).setResizable(false);
playersDataTable.getColumnModel().getColumn(8).setPreferredWidth(50);
playersDataTable.getColumnModel().getColumn(9).setResizable(false);
playersDataTable.getColumnModel().getColumn(9).setPreferredWidth(55);
playersDataTable.getColumnModel().getColumn(10).setResizable(false);
playersDataTable.getColumnModel().getColumn(10).setPreferredWidth(50);
playersDataTable.getColumnModel().getColumn(11).setResizable(false);
playersDataTable.getColumnModel().getColumn(11).setPreferredWidth(35);
playersDataTable.getColumnModel().getColumn(12).setResizable(false);
该按钮称为getAllPlayersBtn,players.size()等于500。
我在StackOverFlow上看到了与此类似的问题,但是似乎无法按照我想要的方式进行调整。我正在使用NetBeans GUI构建器来构建程序的GUI-由于我是该GUI构建器的新手,所以我不确定在此向所有人显示哪个代码(除了先前发布的代码片段之外)。如果需要更多代码,请告诉我确切需要什么。
我的项目在GitHub的https://github.com/rattfieldnz/Java_Projects/tree/master/PCricketStats上供任何想要运行它并为我提供帮助的人使用。该应用程序的主类是“ AppInterfac.java”,而JTable在“涉及多个播放器的统计信息”选项卡中。
这很可能与这个特定问题无关,但是我想我在这里简要地提一下...理想情况下,我希望有一个“ Next”按钮,该按钮显示很多行,每行10个,而“ Previous”按钮可以显示回到10个中,我已经看到了很多不同的方法来做,这让我感到困惑,所以我希望有人来看看我的特殊情况,并指导我如何实现这些按钮。
最佳答案
您应该通过模型添加行,而不是通过表格设置单元格值。
您有两种选择。您可以创建一个新模型,向其中添加所有新行,并在完成后将其应用于表。
您可以从表中获取模型,将其清除并添加所有新行。
这将取决于基础表模型