JTable常见用法细则

图形界面系列教材 (十)- Swing 使用 JTable详解 首先说下TableModel的设计思想,在Model这种思想的指导下,数据和显示分离开来了。数据部分,专门做一个类,叫做TableModel,就用于存放要显示的数据。这正好演绎了Model设计思想中的数据分离的好处,当只需要数据发生变化的时候,修改Model即可,界面GUI部分,不需要做任何改动。第一个单元格的数据的时候,就会调用方法TabelModel的getValueAt(0,0) ,把返回值拿到并显示。如果用户输入的名称为空,或者血量不是小数,在提交数据的时候都会报错。 阅读详情
 

JTable常见用法使用细则

sitinspring原创,转载请注明作者及出处.

JTable是Swing编程中很常用的控件,这里总结了一些常用方法以备查阅.欢迎补充,转载请注明作者与出处.

一.创建表格控件的各种方式:
1)  调用无参构造函数.

JTable table = new JTable();

2)  以表头和表数据创建表格.
Object[][] cellData = {{"row1-col1", "row1-col2"},{"row2-col1", "row2-col2"}};
String[] columnNames 
= {"col1", "col2"};
    
JTable table 
= new JTable(cellData, columnNames);

3)  以表头和表数据创建表格,并且让表单元格不可改.
String[] headers = { "表头一", "表头二", "表头三" };
Object[][] cellData 
= null;

DefaultTableModel model 
= new DefaultTableModel(cellData, headers) {

  
public boolean isCellEditable(int row, int column) {
    
return false;
  }

}
;

table 
= new JTable(model);

二.对表格列的控制
1) 设置列不可随容器组件大小变化自动调整宽度.
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

2) 限制某列的宽度.
TableColumn firsetColumn = table.getColumnModel().getColumn(0);
firsetColumn.setPreferredWidth(
30);
firsetColumn.setMaxWidth(
30);
firsetColumn.setMinWidth(
30);

3) 设置当前列数.
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
int count=5;
tableModel.setColumnCount(count);

4) 取得表格列数
int cols = table.getColumnCount();

5) 添加列
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
tableModel.addColumn(
"新列名");

6) 删除列
table.removeColumn(table.getColumnModel().getColumn(columnIndex));// columnIndex是要删除的列序号

三.对表格行的控制
1) 设置行高
table.setRowHeight(20);

2) 设置当前航数
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
int n=5;
tableModel.setRowCount(n);

3) 取得表格行数
int rows = table.getRowCount();

4) 添加表格行
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
tableModel.addRow(
new Object[]{"sitinspring", "35", "Boss"});

5) 删除表格行
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
model.removeRow(rowIndex);
// rowIndex是要删除的行序号

四.存取表格单元格的数据
1) 取单元格数据
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
String cellValue
=(String) tableModel.getValueAt(row, column);// 取单元格数据,row是行号,column是列号

2) 填充数据到表格.
注:数据是Member类型的链表,Member类如下:
public class Member{
    
// 名称
    private String name;
    
    
// 年龄
    private String age;
    
    
// 职务
    private String title;
}

填充数据的代码:
public void fillTable(List<Member> members){
  DefaultTableModel tableModel 
= (DefaultTableModel) table
  .getModel();
  tableModel.setRowCount(
0);// 清除原有行
  
  
// 填充数据
  for(Member member:members){
    String[] arr
=new String[3];
    arr[
0]=member.getName();
    arr[
1]=member.getAge();
    arr[
2]=member.getTitle();
    
    
// 添加数据到表格
    tableModel.addRow(arr);
  }

  
  
// 更新表格
  table.invalidate();
}

2) 取得表格中的数据
public List<Member> getShowMembers(){
  List
<Member> members=new ArrayList<Member>();
  
  DefaultTableModel tableModel 
= (DefaultTableModel) table
  .getModel();
  
  
int rowCount=tableModel.getRowCount();
  
  
for(int i=0;i<rowCount;i++){
    Member member
=new Member();
    
    member.setName((String)tableModel.getValueAt(i, 
0));// 取得第i行第一列的数据
    member.setAge((String)tableModel.getValueAt(i, 1));// 取得第i行第二列的数据
    member.setTitle((String)tableModel.getValueAt(i, 2));// 取得第i行第三列的数据
    
    members.add(member);
  }

  
  
return members;
}

五.取得用户所选的行
1) 取得用户所选的单行
int selectRows=table.getSelectedRows().length;// 取得用户所选行的行数
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();

if(selectRows==1){
  
int selectedRowIndex = table.getSelectedRow(); // 取得用户所选单行  
  
  .
// 进行相关处理
}

2) 取得用户所选的多行
int selectRows=table.getSelectedRows().length;// 取得用户所选行的行数
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();

if(selectRows>1)
  
int[] selRowIndexs=table.getSelectedRows();// 用户所选行的序列
  
  
for(int i=0;i<selRowIndexs.length;i++){
    
// 用tableModel.getValueAt(row, column)取单元格数据
    String cellValue=(String) tableModel.getValueAt(i, 1);
  }

}

六.添加表格的事件处理
view.getTable().addMouseListener(new MouseListener() {
  
public void mousePressed(MouseEvent e) {
    
// 鼠标按下时的处理
  }


  
public void mouseReleased(MouseEvent e) {
    
// 鼠标松开时的处理
  }


  
public void mouseEntered(MouseEvent e) {
    
// 鼠标进入表格时的处理
  }


  
public void mouseExited(MouseEvent e) {
    
// 鼠标退出表格时的处理
  }


  
public void mouseClicked(MouseEvent e) {
    
// 鼠标点击时的处理
  }

}
);

如何让Arduino IDE支持你手里的STM32 nucleo开发板 Arduino IDE开发环境在默认情况下不支持STM32 NUCLEO开发板,只有通过添加附加开发板管理包才能使用。目前为止,只有一部分板子支持使用Arduino IDE开发环境进行开发,分别是 Nucleo F207ZG, Nucleo F429ZI, Nucleo F030R8, Nucleo F091RC, Nucleo F103RB, Nucleo F303RE, Nucl... 阅读详情

相关推荐

从零开始:使用VMOS Pro和Xposed绕过APP环境检测的完整指南

本文详细解析了使用VMOS Pro和Xposed框架绕过APP环境检测的完整技术方案,包括模拟器检测、Root环境检测和Hook框架检测的对抗方法。通过实战案例和代码示例,展示了如何利用Xposed Hook技术拦截检测逻辑,特别针对360加固等保护技术提供了解决方案。

ee345的博客 737

Java Swing JTable:表格

1 JTable:表格 表格是 Swing 新增加的组件,主要功能是把数据以二维表格的形式显示出来,并且允许用户对表格中的数据进行编辑。表格组件是最复杂的组件之一,它的表格模型功能非常强大、灵活而易于执行。Swing 使用 JTable 类实现表格。 1.2 JTable 构造函数 JTable():构造一个默认的 JTable,使用默认的数据模型、默认的列模型和默认的选择模型对其进行初始化。...

书香水墨 3339

DASH 流媒体协议(Dynamic Adaptive Streaming over HTTP)概述——起源、MPD文件解析、相关项目

简单介绍DASH的起源与发展、MPD文件简要解析、相关项目,以及常见流媒体协议的比较

farewellyi的博客 6893

Java------JTable的使用

JTable,表格。JTable 是用来显示和编辑常规二维单元表。 表格组件和其他普通组件一样,需要添加到中间容器中才能显示,添加表格到容器中有两种方式: 添加到普通的中间容器中(如上面代码实例所示的添加到JPanel),此时添加的jTable只是表格的行内容,表头(jTable.getTableHeader())需要额外单独添加。此添加方式适合表格行数确定,数据量较小,能一次性显...

hello_cmy的博客 4979

手把手拆解DGX GB200 NVL72:1个机柜如何塞进72块GPU?详解NVLink Switch铜缆背板设计

本文深度解析英伟达DGX GB200 NVL72系统如何通过NVLink Switch铜缆背板设计,在标准42U机柜中集成72块B200 GPU,实现1800GB/s的超高带宽。文章详细介绍了模块化架构、铜缆互连技术、液冷散热方案和高密度供电系统等核心创新,为AI算力需求提供突破性解决方案。

red88的博客 1594

海思Hi3516平台集成IMX214 Sensor实战:从I2C调试到VI通路构建

本文详细记录了在海思Hi3516平台上集成索尼IMX214图像传感器的完整实战过程。从硬件I2C通讯调试、驱动层适配,到上层VI通路构建与ISP配置,提供了系统性的排查步骤与代码修改要点,旨在帮助开发者快速打通从Sensor到屏幕的完整视频采集链路,解决集成过程中的常见问题。

tcp8optimizer的博客 597

Java笔记JTable常见用法细则

sitinspring原创,转载请注明作者及出处. JTable是Swing编程中很常用的控件,这里总结了一些常用方法以备查阅.欢迎补充,转载请注明作者与出处. 一.创建表格控件的各种方式: 1)  调用无参构造函数. JTable table = new JTable(); 2)  以表头和表数据创建表格. Object[][] cellData = {{"row1-col1", "

落日小屋 1877

自动化学报Ctex+texstudio配置方法

自动化学报Latex的模板win10使用方法(CTEX+texstudio)

zxy15924462502的博客 7381
上一篇: 开机会自动运行chkdsk ,怎么设置不运行
下一篇: XXX could not be redeployed because it could not be completely removed in the undeployment phase
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值