Java swing JTable 是什么

import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class DemoJ {
	
	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		PanelTable1 panel = new DemoJ().new PanelTable1();
        // 6. 创建窗口并添加滚动面板
        JFrame frame = new JFrame("成绩表");
        frame.add(panel);
        frame.setSize(400, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);

	}
	
	//创建表格类
	private class PanelTable1 extends JPanel{
		PanelTable1(){
			setLayout(new GridLayout(2,1));
			//1.创建二维数组 ,表格数据
			Object [][]data= {{"张三",75,98,87},{"李四",45,56,67},{"王五",66,56,86}};
			//2.创建列名数组(表头)
			String [] columnsName ={"姓名","语文","数学","英语"};
			//3.创建表格模型
			DefaultTableModel model = new DefaultTableModel (data,columnsName);
			//4.创建JTable
			JTable table =new JTable(model);
			//5.把表格放在滚动面板里
			JScrollPane js = new JScrollPane(table);
			//6.添加到面板
			add(js);
			
			JPanel panel = new JPanel();
			panel.setLayout(new FlowLayout());
			JButton b1 = new JButton("增加");
			JButton b2 = new JButton("删除");
			JButton b3 = new JButton("修改");
			JButton b4 = new JButton("检查");
			JLabel label = new JLabel("查询内容");
			panel.add(b1);panel.add(b2);panel.add(b3);panel.add(b4);panel.add(label);
			add(panel);
			
			b1.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent e) {
					// TODO Auto-generated method stub
					model.addRow(new Object[] {"赵六",86,52,75});
					model.insertRow(1, new Object[] {"赵六",86,52,75});
				}
			});
			b2.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent e) {
					// TODO Auto-generated method stub
					model.removeRow(1);
				}
			});
			
			b3.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent e) {
					// TODO Auto-generated method stub
					model.setValueAt(80, 0, 1);
				}
			});
			b4.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent e) {
					// TODO Auto-generated method stub
					label.setText(model.getValueAt(0, 1).toString());
				}
			});
		}
		
		
	}

}

JTable 是 Java 里用来展示表格数据的 “电子表格小能手”,就像 Excel 表格一样,有行有列,能装各种数据。

二、二维数组是啥?

二维数组就是 “数组套数组”,像个棋盘一样有行有列。
比如,你有 3 个学生的成绩,每个学生有 4 门课的分数,就可以用一个 3 行 4 列 的二维数组来存,就像这样:

// 二维数组 = [行][列]
int[][] scores = {
    {90, 85, 95, 100},  // 第1个学生的4门课成绩
    {70, 80, 75, 85},   // 第2个学生的4门课成绩
    {60, 65, 70, 75}    // 第3个学生的4门课成绩
};
  • scores[0][0] 就是第 1 行第 1 列的数据(90)。
  • scores[1][2] 就是第 2 行第 3 列的数据(75)。
  • 可以把它想象成一个表格,第一个下标是行号,第二个下标是列号

 

用二维数组创建 JTable 

 

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

public class JTableDemo {
    public static void main(String[] args) {
        // 1. 创建二维数组数据(表格内容)
        Object[][] data = {
            {"张三", 20, 90.5},
            {"李四", 21, 85.0},
            {"王五", 22, 92.3}
        };

        // 2. 创建列名数组(表头)
        String[] columnNames = {"姓名", "年龄", "分数"};

        // 3. 创建表格模型(剧本)
        DefaultTableModel model = new DefaultTableModel(data, columnNames);

        // 4. 创建 JTable(演员按照剧本来表演)
        JTable table = new JTable(model);

        // 5. 把表格放到滚动面板里(表格太大时可以滚动)
        JScrollPane scrollPane = new JScrollPane(table);

        // 6. 创建窗口并添加滚动面板
        JFrame frame = new JFrame("成绩表");
        frame.add(scrollPane);
        frame.setSize(400, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

 

代码解释(超简单版)

  1. 数据准备
    用二维数组 data 存表格内容,每个子数组就是一行数据。

  2. 列名设置
    columnNames 数组定义表头(第一行)的名称。

  3. 创建模型
    DefaultTableModel 把数据和列名组合成表格的 “剧本”。

  4. 创建表格
    JTable 根据模型创建表格,就像演员按照剧本表演一样。

  5. 添加滚动条
    JScrollPane 让表格可以滚动,防止数据太多显示不全。

  6. 显示窗口
    最后把表格放到窗口里,搞定!

 

总结(划重点)

  1. 二维数组 = 表格数据(行和列)。
  2. JTable = 展示表格的组件。
  3. DefaultTableModel = 连接数据和表格的 “桥梁”。
  4. JScrollPane = 给表格加个滚动条。

**************************************************************************************************************** 

 

一、DefaultTableModel 是啥?

想象一下,DefaultTableModel 是 Java 表格世界的「武林盟主」,负责管理 JTable 的数据规则

  • 它维护着一个「数据仓库」(二维数组)和「表头清单」(一维数组)。
  • 所有对表格的增删改查操作,都要通过它来发号施令!

 

1. 增 = 招兵买马

场景:新增一行数据(比如给表格加个新学生)。

// 方法1:直接添加一行数据(像往花名册里加个新兵)
model.addRow(new Object[]{"赵六", 23, 88.5});

// 方法2:插入到指定位置(比如把新兵安排到第2排)
model.insertRow(1, new Object[]{"田七", 24, 91.0});
2. 删 = 开除弟子

场景:删除一行数据(比如开除某个学生)。
代码

// 删除第2行(注意:行号从0开始,所以这里删的是表格里的第3行)
model.removeRow(1);

 

3. 改 = 易容术

场景:修改某个单元格的数据(比如把李四的分数从 85 改成 95)。
代码

// 把第1行第2列(李四的分数)改成 95.0
model.setValueAt(95.0, 0, 2);
4. 查 = 武林悬赏令

场景:获取某个单元格的数据(比如查看王五的年龄)。
代码

// 获取第2行第1列(王五的年龄)
Object age = model.getValueAt(1, 1);
System.out.println("王五的年龄是:" + age);

 

查看数据规模

int rowCount = model.getRowCount();    // 查看有多少行(多少学生)
int columnCount = model.getColumnCount();  // 查看有多少列(多少信息字段)

 修改表头

// 把第3列的表头从「分数」改成「期末成绩」
model.setColumnName(2, "期末成绩");

. 清空表格(大清洗)

// 方法1:一行一行删(适合慢慢清理)
while (model.getRowCount() > 0) {
    model.removeRow(0);
}

// 方法2:直接重置(适合一键清空)
model.setRowCount(0);

 

  1. DefaultTableModel 是 JTable 的「指挥官」,控制数据的增删改查。
  2. addRow() 或 insertRow()
  3. removeRow()
  4. setValueAt()
  5. getValueAt()

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值