JTable常见用法细则

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) {
    // 鼠标点击时的处理
  }
});
转自:http://www.blogjava.net/sitinspring/archive/2007/12/18/168425.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/290557.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android之通过ActivityLifecycleCallbacks判断程序是否运行在后台

1、问题 判断程序是否运行在后台运行 2、解决办法 我们可以使用ActivityLifecycleCallbacks,对于ActivityLifecycleCallbacks&#xff0c;看我的这篇博客介绍() Android之ActivityLifecycleCallbacks的得到当前的activity的状态 &#xff08;http://blog.csdn.net/u01106870…

下拉刷新:继承listView控件

1、首先初始化的时候给控件监听OnScrollListener&#xff0c;其中onScroll的参数里得到第一个显示的条目&#xff0c;当第一个条目为0的时候就可以执行下啦刷新了。第二覆写的方法是 onScrollStateChanged就是滑动状态的监听&#xff0c;3种状态都是常量&#xff1a;快速滑动&a…

软件项目组织管理(二、三)项目管理与信息技术环境、项目管理过程组

文章目录系统方法系统管理三维模型组织环境组织的四个框架组织的结构项目生命周期管理评审虚拟团队什么是过程项目管理过程组系统方法 项目管理工作需要采取系统的方法&#xff0c;描述在解决复杂问题时所需的整体性和分析性方法。 系统哲学&#xff1a;将事情作为系统考虑的…

一点杂感 以及 java8 Streams API 与 C# Linq 简要对比分析

写在前面的一点小吐槽、一点杂感学 Haskell 学了一段时间之后&#xff0c;虽说拿他来写东西还是完全不行&#xff0c;但是看别的语言特性时&#xff0c;总是会带着一种“诶&#xff0c;这玩意在哪哪见过”的蜜汁既视感。且不说几乎成为现代编程语言标配的 Lambda 、闭包&#x…

svn之迁移代码技巧

1、问题 之前客户做了很多定制&#xff0c;加起来有10几个&#xff0c;每个项目里面4分代码&#xff0c;需要迁移到高版本里面去。我特么傻逼了看每次svn记录然后一个一个的修改&#xff0c;日了狗一样。 2、解决办法 点击到当前目录 svn showlog 然后 ctrl A 然后点击鼠标右…

《编译与反编译技术》—第1章1.7节C语言程序的编译流程

本节书摘来自华章出版社《编译与反编译技术》一书中的第1章&#xff0c;第1.7节C语言程序的编译流程&#xff0c;作者庞建民&#xff0c;陶红伟&#xff0c;刘晓楠&#xff0c;岳峰&#xff0c;更多章节内容可以访问云栖社区“华章计算机”公众号查看。1.7 C语言程序的编译流程…

Base64

2019独角兽企业重金招聘Python工程师标准>>> Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64&#xff0c;所以每6个比特为一个单元&#xff0c;对应某个可打印字符。三个字节有24个比特&#xff0c;对应于4个Base64单元&#xff0c…

字符编码总结

字符编码精华总结 文件或字符串乱码相信大家都没少遇到, 今天主要就来搞清楚字符串的编码到底是怎 么一回事. 首先, 我们放把自己置空, 假设现在从来没有字符编码, 刚有一台计算机产生, 让我 们来设计一套方案, 目标是让在计算机屏幕上看到我们平时所书写的字符. 你会怎么 做?…

软件配置管理(六)常用配置软件配置工具指令

文章目录软件配置管理工具的主要功能两种版本控制模型Lock-Modify-UnlockCopy-Modify-MergeSubversionGit软件配置管理工具的主要功能 版本控制变更管理配置审核配置状态统计问题跟踪访问控制和安全控制 两种版本控制模型 Lock-Modify-Unlock “加锁-修改-解锁”模型 对于版…

.NET 6 攻略大全(一)

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;15分钟)欢迎使用 .NET 6。今天的版本是.NET 团队和社区一年多努力的结果。C# 10 和 F# 6 提供了语言改进&#xff0c;使您的代码更简单、更好、性能大幅提升&#xff0c;我们已经看到微软降低了托管云服务的成本。.NE…

http和https和ssl和tcp/ip之间的关系和区别

1、http解释 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准,HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HT…

Win7下JDK环境变量的设置

JDK并不像Microsoft阵营vs那样智能&#xff0c;安装好后所有的东西都给你配置好了&#xff0c;我们还没需要手动配置很多东西 首先说为什么要配置JDK的环境变量在任何路径下识别java命令和java类 配置分为2个部分&#xff0c;1&#xff0c;java命令路径。2,java加载类 分为3个步…

简单模拟实现简单的当登录延时的效果

①、先建立一个activaty去部署我们的登陆界面 1 package com.example.administrator.actionbardemo;2 3 import android.app.Activity;4 import android.content.Intent;5 import android.os.Bundle;6 import android.view.View;7 import android.widget.Button;8 import andro…

《音乐达人秀:Adobe Audition实战200例》——实例11 录制任意音量音乐

本节书摘来自异步社区《音乐达人秀&#xff1a;Adobe Audition实战200例》一书中的第2章&#xff0c;实例11 &#xff0c;作者 健逗&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 实例11 录制任意音量音乐 这个实例将讲解如何任意控制录音过程中的音量。你…

软件项目组织管理(四)项目集成管理

文章目录什么是集成管理集成管理的主要工作SWOT方法筛选信息技术项目过程项目章程集成变更控制变更控制委员会利益相关者分析什么是集成管理 在项目生命周期中协调所有其他项目管理知识领域所涉及的过程&#xff0c;确保项目所有组成要素在恰当的时间、正确的地方、合适的人物…

我的技术回顾2019不止技术的一年

这篇本想具体说下ABP的商业模式的演进与变化&#xff0c;因为愿意像我这样花费心力去研究他的人不多。写着的时候&#xff0c;就得没必要。真有这种想法的人&#xff0c;也会自己研究&#xff0c;我何必去写呢。2019年初&#xff0c;因为各种原因&#xff0c;加上企业资源的调整…

linux之在当前目录下删除不包含aa的文件

1、问题 1、当前目录下删除不包含aa的文件和文件夹2、解决办法 1、rm -rf ls -al | grep -v "aa"

设计模式(1)--简单工厂模式、策略模式

设计模式&#xff08;1&#xff09;--简单工厂模式、策略模式 1. 简单工厂模式 在阎宏博士的《JAVA与模式》一书中开头是这样描述简单工厂模式的&#xff1a;简单工厂模式是类的创建模式&#xff0c;又叫做静态工厂方法&#xff08;Static Factory Method&#xff09;模式。简单…

hql Hibernate.gethibernatetemplate()

1. find(String hql); //普通查询 示例&#xff1a;this.gethibernateTemplate().find("from User"); 2. find(String hql,Object value);//一个查询条件 示例&#xff1a;this.gethibernateTemplate().find("from User u where u.name?","test&quo…

软件项目组织管理(五)项目范围管理

范围管理的重要性 软件企业与IT项目应用企业信息化成功的基本保证是对项目范围的确切圈定&#xff0c;维持必须强调&#xff1a; 三类人的获取 需求专家咨询专家概要设计专家 三要素的把握 企业需求管理理论竞争压力 什么是范围 指开展项目产品所包括的所有工作及产生这些…