JTable综合操作案例

2026-02-12 20:26:20

1、初始化一个JTable:该demo整体采用BorderLayout布局,在NORTH方位是一个放置了增删改按钮的面板,在CENTER方位是一个放置表格的滚动面板(将表格放置在滚动面板的目的在于数据量多的时候可以上下翻动查看),为表格初始化两条数据。

JTable综合操作案例

JTable综合操作案例

JTable综合操作案例

2、设置表格某些列居中对齐的方法:

//设置表格单元格字体居中显示

DefaultTableCellRenderer render = new DefaultTableCellRenderer();

render.setHorizontalAlignment(SwingConstants.CENTER);

table.getColumn("学号").setCellRenderer(render);

table.getColumn("姓名").setCellRenderer(render);

JTable综合操作案例

JTable综合操作案例

3、设置表格列宽:

//设置表格宽度情况

DefaultTableColumnModel dcm = (DefaultTableColumnModel)table.getColumnModel(); 

dcm.getColumn(0).setPreferredWidth(60); //设置表格显示的最好宽度,即此时表格显示的宽度。

dcm.getColumn(0).setMinWidth(45);//设置表格通过拖动列可以的最小宽度。

dcm.getColumn(0).setMaxWidth(75);//设置表格通过拖动列可以的最大宽度。

此时拖动第一列可以发现其最宽可以拖到75,最小只能缩小到45

JTable综合操作案例

JTable综合操作案例

4、给表格设置行高:

//给表格设置行高

table.setRowHeight(35);

到此为止,和表格显示相关的逻辑写完了。

JTable综合操作案例

JTable综合操作案例

1、给表格添加鼠标点击事件后,点击表格单元格时,便会触发该事件,给表格添加TableModelEvent事件,当表格内容编辑发生变化后便会执行该事件

JTable综合操作案例

JTable综合操作案例

JTable综合操作案例

1、给表格增加一条记录

JTable综合操作案例

JTable综合操作案例

2、给表格删除一条记录

JTable综合操作案例

JTable综合操作案例

JTable综合操作案例

3、给表格更新一条记录

JTable综合操作案例

JTable综合操作案例

1、import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.SwingConstants;

import javax.swing.event.TableModelEvent;

import javax.swing.event.TableModelListener;

import javax.swing.table.DefaultTableCellRenderer;

import javax.swing.table.DefaultTableColumnModel;

import javax.swing.table.DefaultTableModel;

public class TableDemo extends JFrame 

implements ActionListener {

//操作面板,用于放置增删改按钮

private JPanel controlPanel;

//定义表格的数据模型

private DefaultTableModel model;

//定义一个表格

private JTable table;

//定义一个滚动面板,用于放置表格

private JScrollPane scrollPane;

//增删改按钮

private JButton addBtn, deleteBtn, updateBtn;

public TableDemo(){

//设置窗口尺寸

setBounds(100, 100, 500, 500);

//JTable的表头标题

String[] head = {"学号", "姓名", "班级", "性别"};

//JTable的初始化数据

Object[][] datas = {{"001","张三","班级一","男"},

{"002","李四","班级二","女"}}; 

//初始化JTable的数据模型

model = new DefaultTableModel(datas, head);

//初始化表格

table = new JTable(model);

//初始化滚动面板

scrollPane = new JScrollPane(table);

//初始化按钮以及添加监听器

addBtn = new JButton("增加");

deleteBtn = new JButton("删除");

updateBtn = new JButton("修改");

addBtn.addActionListener(this);

deleteBtn.addActionListener(this);

updateBtn.addActionListener(this);

//初始化控制面板

controlPanel = new JPanel();

controlPanel.add(addBtn);

controlPanel.add(deleteBtn);

controlPanel.add(updateBtn);

//该窗口使用BorderLayout布局

add(controlPanel, BorderLayout.NORTH);

add(scrollPane, BorderLayout.CENTER);

//设置表格单元格字体居中显示

DefaultTableCellRenderer render = 

new DefaultTableCellRenderer();

render.setHorizontalAlignment(SwingConstants.CENTER);

table.getColumn("学号").setCellRenderer(render);

table.getColumn("姓名").setCellRenderer(render);

//设置表格宽度情况

DefaultTableColumnModel dcm = 

(DefaultTableColumnModel)table.getColumnModel(); 

//设置表格显示的最好宽度,即此时表格显示的宽度。

dcm.getColumn(0).setPreferredWidth(60); 

//设置表格通过拖动列可以的最小宽度。

dcm.getColumn(0).setMinWidth(45);

//设置表格通过拖动列可以的最大宽度。

dcm.getColumn(0).setMaxWidth(75);

//给表格设置行高

table.setRowHeight(35);

table.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e) {

int row = table.getSelectedRow();

int col = table.getSelectedColumn();

System.out.println("编辑前:" + table.

getValueAt(row, col));

}    

});

table.getModel().addTableModelListener(

new TableModelListener(){

public void tableChanged(TableModelEvent e) {

if(e.getType() == TableModelEvent.UPDATE) {

int row = e.getLastRow();

int col = e.getColumn();

System.out.println("编辑后:" + 

table.getValueAt(row, col));

}

}

});

setVisible(true);

}

@Override

public void actionPerformed(ActionEvent e) {

if (e.getSource() == addBtn) {

model.addRow(new Object[] {"003","王五","班级一","男"});

} else if (e.getSource() == deleteBtn) {

int row = table.getSelectedRow();

if (row == -1) {

JOptionPane.showMessageDialog(this, "请先选择一条记录!");

return;

}

model.removeRow(table.getSelectedRow());

} else if (e.getSource() == updateBtn) {

int row = table.getSelectedRow();

if (row == -1) {

JOptionPane.showMessageDialog(this, "请先选择一条记录!");

return;

}

table.setValueAt("测试", row, 1);

}

}

public static void main(String[] args){

new TableDemo();

}

}

猜你喜欢