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

相关文章

来自专栏张善友的专栏

发布一个日期选择控件(ASPNET2.0)

The Coolest DHTML Calendar,这是一个在GPL下发布的JS日历程序,具有极高的可配置性,包括外观样式、显示格式、显示内容等等。默认程序...

33390
来自专栏c#开发者

让web api 4.5支持Jquery.getJson(url,handle)跨域访问

代码片段,google了半天,找到的都是4.5 rc,或之前版本的代码,发现都不能用,正式版后有些方法做了修改。我重新修改一下分享给大家 public stat...

28750
来自专栏个人随笔

C#编写影院售票系统(A project with a higher amount of gold )(2:相关代码)

此篇文章为项目代码,,,需要项目需求 ,思路分析与窗体效果请访问:http://www.cnblogs.com/lsy131479/p/8367304.html...

35250
来自专栏跟着阿笨一起玩NET

C#将数据以XML格式写入Excel

本文转载:http://www.cnblogs.com/eflylab/archive/2008/09/21/1295580.html

16420
来自专栏木宛城主

曾经的代码系列——AJAX和JSON生成下拉列表框

代码测试使用 前台页面 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GetGradeC...

20770
来自专栏跟着阿笨一起玩NET

用于RichTextBox控件记录日志信息

14810
来自专栏跟着阿笨一起玩NET

C#自定义泛型类绑定ComboBox控件

C# WinForm ComboBox 自定义数据项 (ComboBoxItem )

27410
来自专栏互联网开发者交流社区

STC-单片机控制系统

22230
来自专栏草根专栏

.NET Core 网络数据采集 -- 使用AngleSharp做html解析

51000
来自专栏阿炬.NET

【要什么自行车】ASP.NET MVC4笔记03:调用编辑器 kindeditor

32550

扫码关注云+社区

领取腾讯云代金券