Swing 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(); feedom.net

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) {
    // 鼠标点击时的处理
  }
});

原文地址:https://www.cnblogs.com/HIT-ryp/p/12584162.html

时间: 2024-11-05 15:56:28

Swing JTable动态增删行 列操作介绍(详细)的相关文章

Telerik RadGridView动态增删行及行列操作

最近使用一直使用第三方控件Telerik,版本 2011 Q1,一直使用显示控件RadGridView,使用起来比DataGird好使, 也发现有控件问题. 1.增行 RadGridView中使用BeginInsert(),动态增加默认行方法,避免与 ShowInsertRow一起使用 1 ///增加行 2 radgridview.BeginInsert(); 或使用ShowInsertRow=true; 1 radgridview.ShowInsertRow=true; 2.删行 RadGri

javascript动态增删行的实现

 //增加行 function doAddRow() { var bodyObj=document.getElementById("fm2_table_body"); //tbody 的id var rowCount = bodyObj.rows.length; var newRow = bodyObj.insertRow(rowCount++); var C1 = newRow.insertCell(0); var C2 = newRow.insertCell(1); C1.se

Swing中使用JTable动态获取数据库中的数据并显示

笔者注:本文供新手学习使用,若有一定基础,可以直接看3! 1.创建数据库: /* Navicat MySQL Data Transfer Source Server : aa Source Server Version : 50519 Source Host : localhost:3306 Source Database : test Target Server Type : MYSQL Target Server Version : 50519 File Encoding : 65001 D

sqlserver报表统计——参数化动态PIVOT行转列

先列出所有表结构: --title 报表 --table 实收水费:hx_t_received --字段 收费部门id:hx_fdepartmentid 1.收费部门名称:hx_fdepartmentname 应收水费信息ID:hx_freceivableid --收费类别:hx_ftype (水费(1):再分[开户(table) 供水类别:自来水(100000001)==水费,中水(100000002)==中水费],代理费(2)==污水处理费) --实收金额:hx_freceivedamoun

对Table的操作(赋值、动态新增行、删除行、保存table中多行数据对象

一.成品界面: 二.功能点描述 从后台传list对象,前台table展示. 可添加行操作,新增或者删除行. 三.源码: Form表单: <form id="reportForm" method="post"> <table class="table-grid table-list" cellpadding="1" cellspacing="1" id="reportTable&q

notepad++ 使用(添加每行首尾字符,列操作)

对每一行的首尾添加字符 ctrl+H 弹出对画框,勾选正则表达式,首部添加字符则在查找目标中填写字符^ ,如果是尾部则填写 $ .然后在替换为中写想要添加的字符即可. 对于列操作,Alt+c,为当前鼠标所在列操作,可以添加字符等. 也可以点击Alt键,用鼠标拖动,选择要操作的列.然后在编辑菜单中选择要进行的操作即可.

FineUIMvc随笔 - 动态创建表格列

声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. 用户需求 用户希望实现动态创建表格列,在 WebForms 中,我们通过在 Page_Init 中创建列来实现: 但是在 MVC 中,如果还想着 WebForms 的那一套,想着怎么才能在 Controller 中访问 View 中的表格控件,这是行不通的. 我曾写过一个系列文章<ASP.NET MVC快速入门(MVC5+EF6)>,开篇就讲到了 MVC 中的页面的生成流程: 这个页面之所以能够呈现在我们眼前,经历了三个主

Swing JTable 详解

改变列头 flightTable.getTableHeader().setDefaultRenderer(new TableCellRenderer() { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { MButton btn = new MButton(); btn.se

动态样式语言Sass&amp;Less介绍与区别

一. Sass/Scss&Less是什么? Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,语法跟css一样(但多了些功能),比css好写,而且更容易阅读.Sass语法类似与Haml,属于缩排语法(makeup),用意就是为了快速写Html和Css. Less一种动态样式语言. 将CSS赋予了动态语言的特性,如变量,继承,运算, 函数. LESS 既可以在客户端上运行 (支持IE 6+, Webkit, Firefox),也可一在服务端运行 (