[英]Searching ArrayList using JTable and JButton
我有一個保存足球比賽的 ArrayList,當用戶輸入日期並按下“搜索”按鈕時,會打開一個新的 JTable,顯示當天進行的所有比賽。 我已經循環獲取日期並將其與 JTextField 中的輸入進行比較,但它只會給我一個空表,即使在用戶輸入的日期有比賽記錄。 在下面的這段代碼中,我只是使用 JTextField 上的 Enter 鍵來執行搜索,因為我不知道如何將 JTextField 映射到 JButton。 我試過,但它只打印搜索 Jbutton 名稱。
public void searchMatch(ArrayList<Matches> searchMatch, String e)
{
DefaultTableModel searchModel = new DefaultTableModel();
for(int i = 0; i < searchMatch.size(); i++)
{
if(searchMatch.get(i).getM_date().equals(e))
{
System.out.println(searchMatch.get(i).getM_date());
String date = searchMatch.get(i).getM_date();
String teamName = searchMatch.get(i).getM_teamName();
String teamName2 = searchMatch.get(i).getM_teamName2();
int goalsScoredTeam1 = searchMatch.get(i).getGoalsTeam1();
int goalsScoredTeam2 = searchMatch.get(i).getGoalsTeam2();
Object[] row = {teamName, teamName2, goalsScoredTeam1, goalsScoredTeam2,date};
searchModel.addRow(row);
JTable searchTable = new JTable(searchModel);
searchTable.setFillsViewportHeight(true);
JPanel searchPanel = new JPanel();
JScrollPane scrollPane = new JScrollPane(searchTable);
searchPanel.add(scrollPane);
JFrame frame = new JFrame("Searched Matches");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
searchTable.setOpaque(true);
frame.setContentPane(searchPanel);
frame.pack();
frame.setSize(500, 500);
frame.setVisible(true);
}
}
}
DefaultTableModel searchModel = new DefaultTableModel();
您的 TableModel 沒有要顯示的列。
即使您添加了數據行,也無法顯示任何數據,除非您還為 TableModel 定義了“列名”。
你的代碼應該是這樣的:
String columnNames = { "Date", "Name", "..." };
DefaultTableModel searchModel = new DefaultTableModel(columnNames, 0);
這將創建一個只有列名的空 TableModel。 然后您的循環代碼將添加每一行數據。
請注意,您還應該考慮將所有數據存儲在 TableModel 中,然后只過濾 TableModel。 閱讀 Swing 教程中關於排序和過濾的部分,以獲取工作示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.