JTable常见用法细则+设置某列可编辑+滚动表格

JTable常见用法细则

JTable是Swing编程中很常用的控件,这里总结了一些常用方法以备查阅.欢迎补充,转载请注明作者与出处. 一. 创建表格控件的各种方式: 1)  调用无参构造函数.

JTable table = new JTable();

2)  以表头和表数据创建表格.

3)  以表头和表数据创建表格,并且让表单元格不可改.

二.对表格列的控制 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) 添加表格行

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类如下:

填充数据的代码:

2) 取得表格中的数据

五.取得用户所选的行 1) 取得用户所选的单行

2) 取得用户所选的多行

六.添加表格的事件处理

例子:

import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.GridLayout;

import javax.swing.Icon; import javax.swing.ImageIcon; 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 PTest{  public PTest()  {   String head[] = {"学号", "姓名", "成绩(请双击以下空格输入)"};    Icon bug = new ImageIcon(getClass().getResource("789.jpg"));   JLabel a = new JLabel (bug);

  JTable a1 = new JTable (20,3);   a1.setRowHeight (30);//设置高度   a1.setDragEnabled(true);   //设置第一、二列不可可编辑   DefaultTableModel tableModel = new DefaultTableModel(20,3){    boolean[] editables = {false, false, true};    public boolean isCellEditable(int row, int col)    {       return editables[col];    }

//使table不可编辑的代码(放在model中有效)全部不可编辑 //    public boolean isCellEditable(int row, int column) //             { //                 return false; //             }       };        a1.setModel(tableModel);

  for (int i=0; i<3; i++)   a1.getModel().setValueAt(head[i], 0, i);

   JPanel panelwrap = new JPanel (new FlowLayout ());    JPanel panel = new JPanel (new GridLayout (2,1));    panel.setPreferredSize (new Dimension (500,400));    // panel.setBackground (Color.black);    panel.add (a,BorderLayout.CENTER);    JScrollPane a2 = new JScrollPane (a1);    panel.add (a2,BorderLayout.CENTER);    panelwrap.add(panel);

   JFrame frame = new JFrame ("JTableDemo");    frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);    frame.setContentPane (panelwrap);    frame.setSize(500,400);    frame.pack();    frame.show();  }  public static void main(String[] args) {   PTest k = new PTest();  } }

//////////////////////////////////////////自己的//////////////////////////////////////

private JTable getJTable0() {   if (jTable0 == null) {    jTable0 = new JTable();    jTable0.setModel(new DefaultTableModel(new Object[][] { {false,  "null", "null", "com1", "null", "null", "null", "null", "null", "null", },      {false, "null", "null", "com2", "null", "null", "null", "null", "null", "null",  },      {  false, "null", "null", "com3", "null", "null", "null", "null", "null", "null",},      { false,"null", "null", "com4", "null", "null", "null", "null", "null", "null",  },      {  false,"null", "null", "com5", "null", "null", "null", "null", "null", "null", },      {  false, "null", "null", "com6", "null", "null", "null", "null", "null", "null",},      { false, "null", "null", "com7", "null", "null", "null", "null", "null", "null", },      {false, "null", "null", "com8", "null", "null", "null", "null", "null", "null",  },      { false,"null", "null", "com9", "null", "null", "null", "null", "null", "null", },      { false,"null", "null", "com10", "null", "null", "null", "null", "null", "null",  },      {false,  "null", "null", "com11", "null", "null", "null", "null", "null", "null", },      { false, "null", "null", "com12", "null", "null", "null", "null", "null", "null", }, }, new String[] {"操作",  "ID", "status", "序号", "产品序列号", "半成品序列号",      "所属工作任务号", "产品型号(pn码)", "生产进度状态", "端口状态", }) {     private static final long serialVersionUID = 1L;     Class<?>[] types = new Class<?>[] { Boolean.class, Object.class, Object.class, Object.class, Object.class, Object.class, Object.class, Object.class, Object.class,       Object.class, };     public Class<?> getColumnClass(int columnIndex) {      return types[columnIndex];     } //    //使table不可编辑的代码(放在model中有效)全部不可编辑 //    public boolean isCellEditable(int row, int column) //             { //                 return false; //             }     //指定列不可编辑     boolean[] editables = {true, false, false,false,false,false,false,false,false,false};        public boolean isCellEditable(int row, int col)        {           return editables[col];        }

//指定行不可编辑     boolean[] editables = {true, false, false,false,false,false,false,false};        public boolean isCellEditable(int row, int col)        {           return editables[row];        }

   });   }   return jTable0;  }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.4K7
来自专栏芋道源码1024

熔断器 Hystrix 源码解析 —— 断路器 HystrixCircuitBreaker

本文主要基于 Hystrix 1.5.X 版本 1. 概述 2. HystrixCircuitBreaker 3. HystrixCircuitBreaker....

5827
来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

3007
来自专栏hbbliyong

WPF Trigger for IsSelected in a DataTemplate for ListBox items

<DataTemplate DataType="{x:Type vm:HeaderSlugViewModel}"> <vw:HeaderSlug...

4224
来自专栏Ceph对象存储方案

Luminous版本PG 分布调优

Luminous版本开始新增的balancer模块在PG分布优化方面效果非常明显,操作也非常简便,强烈推荐各位在集群上线之前进行这一操作,能够极大的提升整个集群...

3685
来自专栏菩提树下的杨过

Flash/Flex学习笔记(23):运动学原理

先写一个公用的小球类Ball: package{ import flash.display.Sprite; //小球 类 public class B...

27410
来自专栏我和未来有约会

Silverlight第三方控件专题

这里我收集整理了目前网上silverlight第三方控件的专题,若果有所遗漏请告知我一下。 名称 简介 截图 telerik 商 RadC...

4405
来自专栏魂祭心

原 canvas绘制clock

5184
来自专栏张善友的专栏

Mix 10 上的asp.net mvc 2的相关Session

Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

2787
来自专栏大内老A

The .NET of Tomorrow

Ed Charbeneau(http://developer.telerik.com/featured/the-net-of-tomorrow/) Exciti...

39210

扫码关注云+社区