Swing 表格的使用
表格是程序中一種非常常見的組件,Swing中提供了用于創(chuàng)建表格的JTable類。JTable可以以二維表格的形式顯示數(shù)據(jù),并且允許用戶對表格中的數(shù)據(jù)進(jìn)行編輯。 JTable 構(gòu)造方法 在使用JTa
表格是程序中一種非常常見的組件,Swing中提供了用于創(chuàng)建表格的JTable類。JTable可以以二維表格的形式顯示數(shù)據(jù),并且允許用戶對表格中的數(shù)據(jù)進(jìn)行編輯。
JTable 構(gòu)造方法
在使用JTable之前,我們首先需要了解幾個(gè)JTable的構(gòu)造方法:
- JTable(int numRows, int numColumns):這個(gè)構(gòu)造方法使用DefaultTableModel來創(chuàng)建一個(gè)具有numRows行和numColumns列個(gè)空單元格的JTable。
- JTable(Object[][] rowData, Object[] columnNames):這個(gè)構(gòu)造方法使用一個(gè)二維數(shù)組rowData來創(chuàng)建一個(gè)JTable,其中rowData中的值將會(huì)被顯示在表格中,而columnNames則是表格的列名稱。
通過這兩個(gè)構(gòu)造方法,我們可以根據(jù)數(shù)據(jù)的不同形式來創(chuàng)建適應(yīng)的JTable對象。
JTable 的簡單使用
下面我們來看一個(gè)簡單的示例,演示如何使用JTable來顯示數(shù)據(jù):
// 創(chuàng)建數(shù)據(jù) Object[][] data { {"John", 25, "Male"}, {"Emily", 28, "Female"}, {"Michael", 30, "Male"} }; // 創(chuàng)建表頭 Object[] columnNames {"Name", "Age", "Gender"}; // 創(chuàng)建 JTable 對象 JTable table new JTable(data, columnNames); // 創(chuàng)建滾動(dòng)面板,用于顯示表格 JScrollPane scrollPane new JScrollPane(table); // 將滾動(dòng)面板添加到容器中 ().add(scrollPane);
在上述示例中,我們首先創(chuàng)建了一個(gè)二維數(shù)組data,其中包含了三行數(shù)據(jù)。然后,通過定義一個(gè)列名稱的字符串?dāng)?shù)組columnNames,我們指定了表格的列標(biāo)題。
接著,我們使用這兩個(gè)數(shù)組作為參數(shù)來創(chuàng)建JTable對象table。最后,我們將table放置在一個(gè)JScrollPane中,并將它添加到容器中,以便能夠滾動(dòng)顯示整個(gè)表格。
通過這樣簡單的幾步,我們就可以創(chuàng)建并顯示一個(gè)基本的JTable。
JTable 數(shù)據(jù)編輯
除了顯示數(shù)據(jù)外,JTable還允許用戶對表格中的數(shù)據(jù)進(jìn)行編輯。例如,我們可以添加按鈕或其他組件來實(shí)現(xiàn)編輯功能。
下面是一個(gè)示例,演示如何在JTable中添加一個(gè)按鈕,并實(shí)現(xiàn)點(diǎn)擊按鈕時(shí)修改表格數(shù)據(jù)的功能:
// 創(chuàng)建數(shù)據(jù)模型 DefaultTableModel model new DefaultTableModel(data, columnNames) { // 列類型 Class[] columnTypes new Class[] { , , }; // 指定列類型 public Class getColumnClass(int columnIndex) { return columnTypes[columnIndex]; } // 判斷單元格是否可編輯 public boolean isCellEditable(int row, int column) { return true; } }; // 創(chuàng)建 JTable 對象 JTable table new JTable(model); // 創(chuàng)建按鈕列 TableButtonColumn buttonColumn new TableButtonColumn(table, editButtonAction, 3); // 將表格添加到容器中 ().add(new JScrollPane(table));
在上述示例中,我們首先創(chuàng)建了一個(gè)DefaultTableModel對象model,該對象繼承自AbstractTableModel,用于存儲(chǔ)表格的數(shù)據(jù)。通過重寫getColumnClass和isCellEditable方法,我們指定了表格中每列的類型以及可編輯的單元格。
接著,我們使用這個(gè)model對象來創(chuàng)建JTable實(shí)例table。然后,我們使用TableButtonColumn類創(chuàng)建了一個(gè)按鈕列,并將其添加到表格中。點(diǎn)擊按鈕時(shí),會(huì)觸發(fā)editButtonAction,從而修改表格中的數(shù)據(jù)。
通過以上步驟,我們就可以實(shí)現(xiàn)在JTable中對數(shù)據(jù)進(jìn)行編輯的功能。