JTable详细介绍
创始人
2024-03-23 12:28:43
0

目录

一、基本表格

二、修改列宽并显示列的名称

三、使用AbstractTableModel抽象类存储数据


 

一、基本表格

显示一个Table需要两组数据
1. 一维数组: String[]columnNames 表示表格的标题
2. 二维数组: String[][] heros 表格中的内容
默认情况下,表格的标题是不会显示出来了,除非使用了JScrollPane 

import javax.swing.JFrame;
import javax.swing.JTable;public class TestGUI {public static void main(String[] args) {JFrame f = new JFrame("LoL");f.setSize(400, 300);f.setLocation(200, 200);f.setLayout(new BorderLayout());// 表格上的titleString[] columnNames = new String[] { "id", "name", "hp", "damage" };// 表格中的内容,是一个二维数组String[][] heros = new String[][] { { "1", "盖伦", "616", "100" },{ "2", "提莫", "512", "102" }, { "3", "奎因", "832", "200" } };JTable t = new JTable(heros, columnNames);f.add(t, BorderLayout.CENTER);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setVisible(true);}
}

二、修改列宽并显示列的名称

 

修改列宽很简单,主要是调用Jtable类当中的API

t.getColumnModel().getColumn(0).setPreferredWidth(10);

想要显示列名需要使用JScrollPane组件,注意点就是使用Jtable对象新建一个JScrollPane组件,并且将JScrollPane添加到顶层容器Frame中。(注意不要再添加Jtable对象了)

 JScrollPane sp = new JScrollPane(t);f.add(sp, BorderLayout.CENTER);

三、使用AbstractTableModel抽象类存储数据

首先说下TableModel的设计思想,在Model这种思想的指导下,数据和显示分离开来了。 比如对于JTable而言,有数据部分,也有显示部分(比如列宽等信息)。 数据部分,专门做一个类,叫做TableModel,就用于存放要显示的数据。

使用TableModel的方式存放Table需要显示的数据,HeroTableModel 继承AbstractTableModel ,进而实现了接口TableModel,在HeroTableModel 中提供一个table显示需要的所有信息

  1. getRowCount 返回一共有多少行
  2. getColumnCount 返回一共有多少列
  3. getColumnName 每一列的名字
  4. isCellEditable 单元格是否可以修改
  5. getValueAt 每一个单元格里的值
import javax.swing.table.AbstractTableModel;public class HeroTableModel extends AbstractTableModel {String[] columnNames = new String[] { "id", "name", "hp", "damage" };String[][] heros = new String[][] { { "1", "盖伦", "616", "100" },{ "2", "提莫", "512", "102" }, { "3", "奎因", "832", "200" } };// 返回一共有多少行public int getRowCount() {// TODO Auto-generated method stubreturn heros.length;}// 返回一共有多少列public int getColumnCount() {// TODO Auto-generated method stubreturn columnNames.length;}// 获取每一列的名称public String getColumnName(int columnIndex) {// TODO Auto-generated method stubreturn columnNames[columnIndex];}// 单元格是否可以修改public boolean isCellEditable(int rowIndex, int columnIndex) {return false;}// 每一个单元格里的值public Object getValueAt(int rowIndex, int columnIndex) {// TODO Auto-generated method stubreturn heros[rowIndex][columnIndex];}}

实际上,我们之前新建的JTable是使用如下形式的构造方法:

JTable(Object[][] rowData, Object[] columnNames) 

如图所示,在JTable的的源代码中,它就会根据rowData和columnNames去创建一个TableModel对象。

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...