专栏首页海说JTable常见用法细则+设置某列可编辑+滚动表格

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

相关文章

  • Dubbo源码学习--环境搭建及基础准备(ServiceLoader、ExtensionLoader)

    环境搭建 Github上下载Dubbo最新发布版本,楼主下载版本为2.5.7。 cd到源码解压目录,maven编译,命令为: mvn clean install...

    YGingko
  • Spring IOC容器分析(4) -- bean创建获取完整流程

    上节探讨了Spring IOC容器中getBean方法,下面我们将自行编写测试用例,深入跟踪分析bean对象创建过程。 测试环境创建 测试示例代码如下: pac...

    YGingko
  • 14、Iterator跟ListIterator的区别

    14、Iterator与ListIterator的区别       在使用List,Set的时候,为了实现对其数据的遍历,会经常使用到Iterator(跌代器)...

    YGingko
  • 关于 JavaScript 中 null 的一切

    JavaScript 有两种类型:原始类型(strings, booleans, numbers, symbols)和对象

    GopalFeng
  • Java函数式开发——优雅的Optional空指针处理

    空闲时会抽空学习同在jvm上运行的Groovy和Scala,发现他们对null的处理比早期版本Java慎重很多。在Java8中,Optional为函数式编程的n...

    哲洛不闹
  • dart 如何优雅的避空

    对于每一个程序员来说,空指针异常应该是基本都会遇到过的异常,而且这个异常出现的概率还比较大。

    AndroidTraveler
  • Android开发 - 处理 null 和 预防空指针异常(NullPointerException) 的一些经验

    比如: 通过intent传参到新的目标 activity,而且一定需要这个参数,那么在新的目标activity中 onCreate方法中 判断中这个参数,如果n...

    zhangyunfeiVir
  • Java中有关Null的9问题

    Java中有关Null的9问题 对于Java程序员来说,null是令人头痛的东西。时常会受到空指针异常(NPE)的骚扰。连Java的发明者都承认...

    用户1289394
  • 如何使用curl命令调用CM的API动态配置Yarn资源池

    在使用CDH集群大数据平台过程中,用户会有需求在自己的统一管理平台上通过API接口能够动态的设置Yarn资源池,Cloudera Manager提供了丰富的AP...

    Fayson
  • Java中有关Null的9件事

    对于Java程序员来说,null是令人头痛的东西。时常会受到空指针异常(NPE)的骚扰。连Java的发明者都承认这是他的一项巨大失误。Java为什么要保留nul...

    哲洛不闹

扫码关注云+社区

领取腾讯云代金券