【Java】JTable的數據刷新


前言

這段時間在寫一個大實驗,水果超市管理系統,yes,我覺得挺大的,但是就當成了一個實驗,接下來還有一個課程設計和一個實訓,more bigger...

問題

在我把其他的都寫好的時候去寫UI層,發現,我的表格刷新是一個大問題,那么究竟怎么靈活的設置表格中的數據呢?

這就不得不提一下TableModel這個怪東西了

TableModel:

public interface TableModelTableModel 接口指定了 JTable 用於詢問表格式數據模型的方法。
只要數據模型實現了 TableModel 接口,就可以通過以下兩行代碼設置 JTable 顯示該模型:
TableModel myData = new MyTableModel();
JTable table = new JTable(myData);

DefaultTableModel(Object[][] data, Object[] columnNames)

構造一個 DefaultTableModel,並通過將 data 和 columnNames 傳遞到 setDataVector 方法來初始化該表。

JTable:

DefaultTableModel 是一個模型實現,它使用一個 Vector 來存儲所有單元格的值,該 Vector 由包含多個 Object 的 Vector 組成。除了將數據從應用程序復制到 DefaultTableModel 中之外,還可以用 TableModel 接口的方法來包裝數據,這樣可將數據直接傳遞到 JTable,如上例所示。這通常可以提高應用程序的效率,因為模型可以自由選擇最適合數據的內部表示形式。

以上來自JavaAPI

人話說

TableModel就是存放JTable表格數據的東西

下面是一個簡單的demo,希望對你有幫助

package test;

import javax.swing.*;
import javax.swing.table.*;

public class TableTest extends JFrame {
	private JLabel title = new JLabel("水果列表");		//上部標題
	private JScrollPane pane = new JScrollPane();	//表格滾動面板
	private JTable table = new JTable();			//水果表格
	
	public TableTest() {
		init();//窗口初始化
		addComponent();//添加表格
		updateTable();//刷新表格數據
	}
	public static void main(String[] args) {
		new TableTest();
	}
	//窗口初始化
	public void init() {
 		this.setTitle("水果管理系統!");
 		this.setSize(600, 420);
 		this.setResizable(false);
 		this.setLocationRelativeTo(null);
 		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 		this.setVisible(true);
 	}
	//添加表格
	public void addComponent() {
		this.setLayout(null);//設置絕對布局
 		//添加標題
 		title.setBounds(265, 20, 70, 25);
 		this.add(title);
 		//表格
 		table.getTableHeader().setReorderingAllowed(false);//列不能移動
 		table.getTableHeader().setResizingAllowed(false);//不可拉動表格
 		table.setEnabled(false);//表格不可更改數據
 		pane.setBounds(50, 50, 500, 200);
 		pane.setViewportView(table);//滾動面板顯示表格數據
 		this.add(pane);
	}
	//刷新表格數據
	public void updateTable() {
		String[] title = {"水果編號","水果名稱","水果單價(/元)","計價單位"};
		Object[][] rowData = {
			{1,"蘋果",5.5,"kg"}
		};
		
		TableModel dataModel = new DefaultTableModel(rowData, title);
 		table.setModel(dataModel);
	}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM