博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java表格 JTable实例 (带滚动条,内嵌选择框)
阅读量:6326 次
发布时间:2019-06-22

本文共 3110 字,大约阅读时间需要 10 分钟。

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);}}

 

转载地址:http://xbgaa.baihongyu.com/

你可能感兴趣的文章
5.7-多源复制搭建
查看>>
HSPA+技术及系统分析
查看>>
Python 多线程及进程
查看>>
迁移应用数据库到MySQL Database on Azure
查看>>
各种类型的背包问题
查看>>
js计算base64文件流大小
查看>>
常用笔记:Web前端
查看>>
各种基金调用介绍
查看>>
PO,VO,BO,DTO,POJO(POCO),DAO的区别(转载)
查看>>
linq中join的用法
查看>>
【CRC校验】学习笔记
查看>>
bzoj千题计划153:bzoj2431: [HAOI2009]逆序对数列
查看>>
bzoj千题计划323:bzoj1951: [Sdoi2010]古代猪文(Lucas+CRT+欧拉定理)
查看>>
Linux基础入门
查看>>
Jenkins performance插件生成性能测试报告【待完成】
查看>>
Maven学习总结
查看>>
补第二阶段冲刺站立会议5(原6月7日)
查看>>
Cookie application session
查看>>
MVC最佳实践
查看>>
【集成学习】sklearn中xgboot模块中fit函数参数详解(fit model for train data)
查看>>