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 条评论
登录 后参与评论

相关文章

来自专栏比原链

Bytom交易说明(账户管理模式)

Gitee地址:https://gitee.com/BytomBlockchain/bytom

1475
来自专栏极客编程

用Solidity语言通过以太坊钱包开发hello world示例

使用以太坊钱包开发实现经典的HelloWord智能合约类。本文中,我们将看到如何编写简单的合约并将其部署到区块链上。我们还将通过发送和读取数据来了解如何与我们的...

551
来自专栏比原链

Derek解读Bytom源码-孤块管理

Gitee地址:https://gitee.com/BytomBlockchain/bytom

461
来自专栏SeanCheney的专栏

Hyperledger Fabric 架构设计整理

整个功能架构如下图所示。 ? 包括三大组件:区块链服务(Blockchain)、链码服务(Chaincode)、成员权限管理(Membership)。 概念术语...

3186
来自专栏酷玩时刻

微信H5支付

先说一个事情。8月1号开始微信公众平台支付的开发配置页面迁移至商户平台 详细说明参考这个或者看下面的截图

1612
来自专栏区块链入门

【链安科技】四个Token逻辑漏洞

在继智能合约漏洞溢出问题引发了一系列损失过后,5月24号,有安全团队再次爆出漏洞溢出的问题(CVE-2018–11397, CVE-2018–11398),账户...

693
来自专栏比原链

Derek解读Bytom源码-孤块管理

Gitee地址:https://gitee.com/BytomBlockchain/bytom

953
来自专栏极客编程

用solidity语言开发代币智能合约

智能合约开发是以太坊编程的核心之一,而代币是区块链应用的关键环节,下面我们来用solidity语言开发一个代币合约的实例,希望对大家有帮助。

1252
来自专栏liuchengxu

用 Go 构建一个区块链 -- Part 6: 交易(2)

翻译的系列文章我已经放到了 GitHub 上:blockchain-tutorial,后续如有更新都会在 GitHub 上,可能就不在这里同步了。如果想直接运行...

851
来自专栏芋道源码1024

分布式事务 TCC-Transaction 源码分析 —— 项目实战

1. 概述 本文分享 TCC 项目实战。以官方 Maven项目 tcc-transaction-http-sample 为例子( tcc-transaction...

5107

扫码关注云+社区