代码如下:

import javax.swing.JTable;

import javax.swing.table.AbstractTableModel;

import javax.swing.JScrollPane;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import java.awt.*;

import java.awt.event.*;

public class JTableDemo extends JFrame {

private boolean DEBUG = true;

public JTableDemo() { // 实现构造方法

super("RecorderOfWorkers"); // 首先调用父类JFrame的构造方法生成一个窗口

MyTableModel myModel = new MyTableModel();// myModel存放表格的数据

JTable table = new JTable(myModel);// 表格对象table的数据来源是myModel对象

table.setPreferredScrollableViewportSize(new Dimension(500, 70));// 表格的显示尺寸

// 产生一个带滚动条的面板

JScrollPane scrollPane = new JScrollPane(table);

// 将带滚动条的面板添加入窗口中

getContentPane().add(scrollPane, BorderLayout.CENTER);

addWindowListener(new WindowAdapter() {// 注册窗口监听器

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

}

// 把要显示在表格中的数据存入字符串数组和Object数组中

class MyTableModel extends AbstractTableModel {

// 表格中第一行所要显示的内容存放在字符串数组columnNames中

final String[] columnNames = { "First Name", "Position", "Telephone",

"MonthlyPay", "Married" };

// 表格中各行的内容保存在二维数组data中

final Object[][] data = {

{ "Wangdong", "Executive", "01068790231", new Integer(5000),

new Boolean(false) },

{ "LiHong", "Secretary", "01069785321", new Integer(3500),

new Boolean(true) },

{ "LiRui", "Manager", "01065498732", new Integer(4500),

new Boolean(false) },

{ "ZhaoXin", "Safeguard", "01062796879", new Integer(2000),

new Boolean(true) },

{ "ChenLei", "Salesman", "01063541298", new Integer(4000),

new Boolean(false) } };

// 下述方法是重写AbstractTableModel中的方法,其主要用途是被JTable对象调用,以便在表格中正确的显示出来。程序员必须根据采用的数据类型加以恰当实现。

// 获得列的数目

public int getColumnCount() {

return columnNames.length;

}

// 获得行的数目

public int getRowCount() {

return data.length;

}

// 获得某列的名字,而目前各列的名字保存在字符串数组columnNames中

public String getColumnName(int col) {

return columnNames[col];

}

// 获得某行某列的数据,而数据保存在对象数组data中

public Object getValueAt(int row, int col) {

return data[row][col];

}

// 判断每个单元格的类型

public Class getColumnClass(int c) {

return getValueAt(0, c).getClass();

}

// 将表格声明为可编辑的

public boolean isCellEditable(int row, int col) {

if (col < 2) {

return false;

} else {

return true;

}

}

// 改变某个数据的值

public void setValueAt(Object value, int row, int col) {

if (DEBUG) {

System.out.println("Setting value at " + row + "," + col

+ " to " + value + " (an instance of "

+ value.getClass() + ")");

}

if (data[0][col] instanceof Integer && !(value instanceof Integer)) {

try {

data[row][col] = new Integer(value.toString());

fireTableCellUpdated(row, col);

} catch (NumberFormatException e) {

JOptionPane.showMessageDialog(JTableDemo.this, "The \""

+ getColumnName(col)

+ "\" column accepts only integer values.");

}

} else {

data[row][col] = value;

fireTableCellUpdated(row, col);

}

if (DEBUG) {

System.out.println("New value of data:");

printDebugData();

}

}

private void printDebugData() {

int numRows = getRowCount();

int numCols = getColumnCount();

for (int i = 0; i < numRows; i++) {

System.out.print(" row " + i + ":");

for (int j = 0; j < numCols; j++) {

System.out.print(" " + data[i][j]);

}

System.out.println();

}

System.out.println("--------------------------");

}

}

public static void main(String[] args) {

JTableDemo frame = new JTableDemo();

frame.pack();

frame.setVisible(true);

}

}

代码运行效果截图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java表格源码_Java表格JTable代码实例解析相关推荐

  1. java商城源码_java 多商户商城系统源码分享

    三勾商城多商户是开发友好的微信小程序商城,框架支持SAAS,支持发布 iOS + Android + 公众号 + H5 + 各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)等多个平台,不可多得 ...

  2. java验证码源码_Java通用验证码程序及应用示例(提供源码下载)

    评论 # re: Java通用验证码程序及应用示例(提供源码下载) 2009-11-27 17:09 零全零美 多谢博主写出这么好的总结,如果能加上汉字验证码,会更完美!  回复  更多评论 # re ...

  3. java linkedlist源码_Java集合之LinkedList源码分析

    一.LinkedList简介 LinkedList是一种可以在任何位置进行高效地插入和移除操作的有序序列,它是基于双向链表实现的. ps:这里有一个问题,就是关于实现LinkedList的数据结构是否 ...

  4. java join 源码_java并发:join源码分析

    join join join是Thread方法,它的作用是A线程中子线程B在运行之后调用了B.join(),A线程会阻塞直至B线程执行结束 join源码(只有继承Thread类才能使用) 基于open ...

  5. java 数组 源码_Java数组转List的三种方式及对比

    来源:https://s.yam.com/6wu6n 前言: 本文介绍Java中数组转为List三种情况的优劣对比,以及应用场景的对比,以及程序员常犯的类型转换错误原因解析. 一.最常见方式(未必最佳 ...

  6. java selector 源码_Java NIO——Selector机制源码分析---转

    一直不明白pipe是如何唤醒selector的,所以又去看了jdk的源码(openjdk下载),整理了如下: 以Java nio自带demo : OperationServer.java   Oper ...

  7. java join()源码_Java Thread的join() 之刨根问底

    0.Join() 线程的合并的含义就是 将几个并行线程的线程合并为一个单线程执行,应用场景是 当一个线程必须等待另一个线程执行完毕才能执行时,Thread类提供了join方法来完成这个功能,注意,它不 ...

  8. java hashset 源码_Java集合源码分析-HashSet和LinkedHashSet

    前两篇文章分别分析了Java的ArrayList和LinkedList实现原理,这篇文章分析下HashSet和LinkedHashSet的源码.重点讲解HashSet,因为LinkedHashSet是 ...

  9. java file源码_java File源码理解,探索File路径

    1.方法: new File(path); 我们知道根据输入的路径path的不同 ,File可以根据path的不同格式,来访问文件.那么,path的形式有几种呢? 根据源码 可以知道,输入的路径pat ...

最新文章

  1. OAuth2.0认证和授权原理
  2. OC-变量和数据类型
  3. 配置编译win7+VS2017+opencv4.0.1+contrib4.0.1
  4. 个人和结对项目 - 英语单词词频统计
  5. Linux基本的网络配置
  6. HTML5 canvas组件
  7. 论文自动转代码!IBM印度大三实习生搞了个神奇研究(已中AAAI)
  8. 错误及原因:Empty JPEG image (DNL not supported)
  9. 非学习的点云配准方法汇总
  10. 手机上有哪些不错的c语言编程软件?
  11. ES测试数据,kibana命令
  12. win10系统更新之后经常蓝屏解决方法分享
  13. Python计算机视觉编程第十章——OpenCV基础知识
  14. python显示3位数不够0补位_关于Python开发中的那些坑总结,令人防不胜防,建议收藏!...
  15. android 调用系统文件管理器
  16. android studio 官方虚拟机,Android Studio安装虚拟机步骤
  17. CSS3 flex实现等分布局的小案例
  18. C语言计算点到直线的距离
  19. 与君一席话......
  20. 想调整视频的色彩平衡就这样操作

热门文章

  1. 使用fio测试磁盘I/O性能
  2. 图像目标检测(Object Detection)原理与实现(三)
  3. 教你如何做出想要的PHPDocker镜像
  4. 基于Zookeeper实现简易版服务的注册与发现机制
  5. vtkSuperquadricSource:创建以原点为中心的多边形超二次曲面
  6. Linux中的软硬连接
  7. [收藏学习]Linux的实时监测命令
  8. [PHP] 日期与时间
  9. .net System.Web.Mail发送邮件
  10. 中文VS2008安装ASP.NET MVC框架解决方案