一期的毕业设计中用到了JTable控件,具体而言,是将数据库中的内容显示到JTable上,再将这个JTable控件加到一个JScrollPane(能滚动的面板)上 ,因为小组成员都要用到,所以我写了一个公用的类,只要把列名(是一个String数组)以及一个SQL的查询语句当作参数,调用这个类的jianbiao方法就能返回一个JPanel,另外还提供了返回JTable对象与DefaultTableModel对象的方法。颇为简单,下面就是这个类。

package chongyong;

import javax.swing.JTable;
import javax.swing.JScrollPane;
import java.awt.GridLayout;
import java.sql.ResultSet;
import java.awt.Cursor;
import java.sql.SQLException;
import javax.swing.JPanel;
import javax.swing.table.DefaultTableModel;
import java.util.Vector;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.BorderLayout;

/**
 * <p>Title: </p>
 *
 * <p>只要传入一个字符数组、一个SQL字符串就会返回以这字符串数组为列名以SQL字符串为内容的表格 </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class autojianbiao extends JPanel {
    JTable table;
    DefaultTableModel tableModel;

//为了方面于大家给表格加一些属性,所以用此方法返回本类生成的JTable对象
    public JTable return_table() {
        return table;
    }
public DefaultTableModel return_table_model(){
return tableModel;
}

//本类的构造方法
    public autojianbiao() {
        super();
    }

public JPanel jianbiao(String[] columnNames, String sqlStr) {
        //表格列向量;
        Vector cell;

//表格行向量;
        Vector row = new Vector();

//声明表格模型;
        tableModel = new DefaultTableModel();

//将表格头转换过向量类型,以备表格模型使用;
        Vector tableHeadName = new Vector();

for (int i = 0; i < columnNames.length; i++) {
            tableHeadName.add(columnNames[i]);
        }

//初始化表格数据,这些数据实例运行来源于数据库中;
        db db1 = new db();
        ResultSet rs = db1.select(sqlStr);

try {

while (rs.next()) {

cell = new Vector();
                for (int i = 1; i <= columnNames.length; i++) {
                    cell.add(rs.getString(i));

}
                row.add(cell);
            }
        } catch (SQLException ex) {
        }

//设置表格模型;
        tableModel.setDataVector(row, tableHeadName);

//表格使用模型;
        table = new JTable(tableModel);
//table.setRowHeight(20);

//new Cursor(1)设置鼠标指针样式,12为手形;
        table.setCursor(new Cursor(12));

//把表格加在scrollPane组件上;
        JScrollPane scrollPane = new JScrollPane();
        scrollPane.getViewport().add(table);

//设置光标为手形;
        scrollPane.setCursor(new Cursor(12));

//定义面板;
        JPanel pan = new JPanel();
        pan.setLayout(new BorderLayout());
        pan.add(scrollPane);

//设置窗体

pan.setSize(737, 160);
//把这个JPanel返回,以方便大家调用
        return pan;
    }

}

后来的使用过程中,我总结出很多问题,拿出来和大家分享:
一、我要实现单击这个表格的一行,点击删除按钮,就把这行删除。
       大家应该知道,要删除这行,首先得取获得点击的这行的行号,刚开始我用的inti=
tableModel.getSelectedRow(),i 就是这个行号,但是发现删除时并不能删除选择的行,解决方法:int i=table.getSelectedRow(),用table获取行号就是当前选中的行号,感觉是tableModel中还存一个副本,并不是
最新的表格样式。

二、要实现根据查询内容,变换Jtable中的内容
       刚开始的实现方法是利用查询语句,重新调用一次上面创建表格的类,把这个表格添加到滚动面板上,出现
的问题:当滚动条移动时,表格不显示查询出来的内容,而是重新显示建JFrame时初始内容。解决方式:不能
重新New 表格,应该是把表格作为参数传过来后,重新写一篇根据RS的内容构造表格内容的程序,改变当前表格的内容。
      所以在涉及到表格的操作里,当要根据增、删、改、查改变表格内容的时候,不要重新New表格,要改变
JtableModel,它提供了addRow()和removeRow方法,很好用。

感受JTable 与 JTableModel相关推荐

  1. JAVA Swing 图形化界面编程

    JAVA Swing 图形化界面编程 目录 1.组件 1.1 基本组件 1.2. 组件边框 1.3. JToolBar 工具条 1.4 JColorChooser 颜色选择器 1.5 JFileCho ...

  2. java jtable 单元格合并_JTable 单元格合并 【转】

    最近,我为了做一个管理系统,需要用到合并JTable的单元格.查找了很多资料,终于简单的实现了.现在把代码共享出来,希望对大家有用. 本程序主要实现行的合并,列的合并大家可以根据下面的代码修改. CM ...

  3. 近来工作和面试一些人的感受(原)

    最近公司招聘,面试了很多人,有牛人 - 无所不能的,自认为没必要再提高的牛人,有硕士,有啥都不懂乱投简历的,有简历项目经验写几十个的各种技术都精通的,还有水平一般却要求薪水很高的,各种人都有.谈谈感受 ...

  4. java显示链表在jtable上输出_jtable的使用精华

    jtable的使用精华 众所皆知,java中没有像c#中的DATAGRID似的数据显示控件,所以不能直接显示数据,只有通过自己定制表格才能显示数据,请个位来讨论一下java中用来显示数据jtable的 ...

  5. 刚进入大学觉得计算机课很难,高校代码条幅迎新生,00后表示刚开学就感受到秃头压力!程序员太难了...

    原标题:高校代码条幅迎新生,00后表示刚开学就感受到秃头压力!程序员太难了 近日,内蒙古师范大学计算机学院为迎接新生挂出了与专业相关的代码创意条幅,学长们表示用结合专业知识的创意条幅,是希望新生能更快 ...

  6. 与 Scott Guthrie 一道感受技术激情 1月13日于北京

    可能很多朋友已经知道了这个消息,我觉得还是写一下,别让这个机会白白溜走.Scott Guthrie是谁,我就不介绍了,简单说:ASP.NET之父,Silverlight 的主要创始人,还管着太多微软的 ...

  7. 还在纠结垃圾分类问题?带你用Python感受ImageNet冠军模型SENet的强大

    作者 | beyondma 转载自CSDN博客 本月1日起,上海正式开始了"史上最严"垃圾分类的规定,扔错垃圾最高可罚200元.全国其它46个城市也要陆续步入垃圾分类新时代.各种被 ...

  8. 感受lambda之美,推荐收藏,需要时查阅

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:9龙 juejin.im/post/5ce66801e51d ...

  9. 坚持刷题678天的感受!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:胡来,中山大学,Datawhale成员 通过自己678天的刷题,不 ...

最新文章

  1. SAP QM 检验批上各个MIC质检结果的查询报表?
  2. 代理模式、动态代理和面向方面
  3. css知识点笔记-常用属性
  4. C++ Primer 5th笔记(chap 19 特殊工具与技术)type_info 类
  5. c语言常用符号与英文,C语言常用符号与英文(7页)-原创力文档
  6. iBatis resultMap出错 The error happened while setting a property on the result object 解决办法
  7. java限制在同一台电脑上只允许有一个用户登录系统
  8. LeetCode题库5:最长回文子串——JavaScript解答
  9. 【NLP】Stanford
  10. 计算机各个部件配合完成加减乘除(计组学习二)
  11. (二十七):application对象 (JSP学习第八天)
  12. python abs的功能_Python Pandas DataFrame.abs()用法及代码示例
  13. 黑客技术之初学者编程入门
  14. ppt设置外观样式_ppt设置主题样式的方法步骤详解
  15. 【音乐拼接】mp3格式
  16. EasyCHM:本程序可能被病毒或者人为修改!的解决方案
  17. 2021年软件测试工具总结——接口测试工具
  18. Phison(群联) PS2251-70等系列量产工具,U盘量产修复,另外一芯片的量产工具
  19. Google SEO入门教程,技术 SEO 简介
  20. 子查询及其分类(标量子查询+列子查询+行子查询+表子查询)

热门文章

  1. 微信小程序开发:学习笔记[8]——页面跳转及传参
  2. 20135313_exp5
  3. 8.2.2继承 第8章 面向对象编程简介
  4. ubuntu中安装jdk
  5. 怪事,硬盘上的FC3_cd1的ISO莫名其妙被改变了
  6. e.getMessage() e.printStackTrace() 和e.printStackTrace() 小结
  7. C#微信公众号开发 -- (七)自定义菜单事件之VIEW及网页(OAuth2.0)授权
  8. linux下apache+php(fastcgi)web服务器的搭建
  9. 文件以附件形式下载的方法
  10. 【Redis学习】Redis开启多个端口