【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);
	}
}

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 8
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: 使用JTable可以通过以下步骤添加一行数据: 1. 定义一个Object数组,用于存储新行的数据。 2. 获取表格模型,调用addRow方法将Object数组作为参数传递给表格模型。 3. 刷新表格,以显示新行。 代码示例: ``` DefaultTableModel model = (DefaultTableModel) jTable.getModel(); Object[] rowData = {"数据1", "数据2", "数据3"}; model.addRow(rowData); jTable.setModel(model); ``` ### 回答2: JavaJTable是一个非常常用的GUI控件,通常用来显示一组二维表格数据。在使用JTable时,我们需要向其中添加行数据。下面来介绍一下如何添加JTable的行数据。 1. 创建表格模型 Java中,JTable数据模型是通过TableModel类来实现的。要向JTable中添加行数据,首先需要创建一个表格模型。 TableModel有很多实现类,但是最简单的实现方式是通过AbstractTableModel类创建,具体实现方式如下: ``` import javax.swing.table.AbstractTableModel; public class MyTableModel extends AbstractTableModel { private Object[][] data; private String[] columnNames; // 构造函数 public MyTableModel(Object[][] data, String[] columnNames) { this.data = data; this.columnNames = columnNames; } // 获取列数 @Override public int getColumnCount() { return columnNames.length; } // 获取行数 @Override public int getRowCount() { return data.length; } // 获取列名 @Override public String getColumnName(int col) { return columnNames[col]; } // 获取单元格值 @Override public Object getValueAt(int row, int col) { return data[row][col]; } // 设置单元格值 @Override public void setValueAt(Object value, int row, int col) { data[row][col] = value; fireTableCellUpdated(row, col); } // 判断单元格是否可编辑 @Override public boolean isCellEditable(int row, int col) { return true; } } ``` 2. 创建JTable 创建一个JTable控件,并设置它的数据模型: ``` JTable table = new JTable(new MyTableModel(data, columnNames)); ``` 其中,data是一个二维数组,表示每行的数据。columnNames是一个一维数组,表示表格列名。 3. 添加行数据 要向JTable中添加行数据,首先需要获取表格模型对象,在将数据添加到它的数据结构中,如下所示: ``` MyTableModel model = (MyTableModel) table.getModel(); model.addRow(new Object[] { "data1", "data2", "data3" }); ``` 其中,new Object[] { "data1", "data2", "data3" }表示添加的行数据,具体根据表格列数和每列数据类型来确定。 通过以上方式,就可以向JTable中添加新行数据了。当然,我们还可以通过其他方法实现添加行数据,如在表格模型中添加新行,在调用JTable的updateUI()方法来实现刷新UI的效果。 ### 回答3: 在Java中,使用JTable添加一行数据是一个常见的操作。以下是实现此操作的步骤: 第一步:定义模型 要向JTable添加数据,首先需要定义表格的模型。可以使用默认表格模型或自定义表格模型。如果要使用默认的表格模型,只需要创建一个新的JTable对象即可。 如果您需要自定义表格模型,则需要创建一个扩展AbstractTableModel的新类,并实现以下方法: - getColumnCount():返回表格的列数。 - getRowCount():返回表格的行数。 - getValueAt():返回指定单元格的值。 - setValueAt():设置指定单元格的值。 您可以将数据存储在数组,列表或数据库中,并使用这些方法从存储器中检索数据。 第二步:添加新行 要添加新行,只需创建一个新的数据数组或列表,并将其添加到模型中。例如,如果您使用的是默认表格模型,则可以使用以下代码向表格添加新行: DefaultTableModel model = (DefaultTableModel) jTable1.getModel(); Object[] row = {"John Doe", "40", "Male"}; model.addRow(row); 这将在表格中添加一个新行,其中包含三个单元格,分别显示名称,年龄和性别。 如果您使用自定义表格模型,则应将新数据添加到数据存储器中,并调用TableModel的fireTableRowsInserted()方法来通知模型更新视图。 第三步:更新表格 一旦您添加了新行,表格就应该更新以显示新数据。通常,表格会自动更新,但如果您需要手动更新,可以调用JTable的repaint()方法。 例如,如果您希望为新增的数据自动滚动到最后一行,则可以使用以下代码: jTable1.scrollRectToVisible(jTable1.getCellRect(jTable1.getRowCount()-1, 0, true)); 这将滚动表格以使新行可见。 综上所述,要向Java JTable添加一行数据,您需要定义表格模型,添加新数据并更新表格以显示新数据。这是一个简单的过程,可以使用默认表格模型或自定义模型来完成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊子q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值