swing【最后一弹】JTable仿写简单Excel!

历时五天终于把所有的常用swing界面组件过了一遍,很多细节还需日后加深。愈发体会熟练查阅jdk文档的重要性,java各种类和方法太繁琐根本记不住,只能靠熟练的文档粘贴,用Eclipse会好很多。

源代码:

//source code
import java.awt.BorderLayout ;
import java.awt.event.ActionListener ;
import java.awt.event.ActionEvent ;
import java.awt.event.WindowListener ;
import java.awt.event.WindowAdapter ;
import java.awt.event.WindowEvent ;
import javax.swing.JFrame ;
import javax.swing.JButton ;
import javax.swing.JTable ;
import javax.swing.JPanel ;
import javax.swing.JScrollPane ;
import javax.swing.table.DefaultTableModel ;
import javax.swing.table.TableColumn ;
import javax.swing.table.TableColumnModel ;

class MyAction implements ActionListener
{
    private JFrame frame = new JFrame("通讯录表格") ;
    private JPanel panel = new JPanel() ;
    private DefaultTableModel tableModel ;
    private JTable table = null ;                //声明表格
    private JButton addColumn = new JButton("增加列") ;
    private JButton removeColumn = new JButton("移除列") ;
    private JButton addRow = new JButton("增加行") ;
    private JButton removeRow = new JButton("移除行") ;
    private String title[] = {"姓名","性别","年龄","手机号码","QQ号"} ;
    private Object person[][] = {{"王呆萌","男","20","18249778269","653866417"},
    {"老王","男","44","18766324287","null"}} ;

    public MyAction()
    {
        this.frame.setLayout(new BorderLayout()) ;
        this.tableModel = new DefaultTableModel(this.person,this.title) ;  //实例化tableModel
        table = new JTable(this.tableModel) ;
        JScrollPane scr = new JScrollPane(this.table) ;

        panel.add(this.addColumn) ;
        panel .add(this.addRow) ;
        panel.add(this.removeColumn) ;
        panel.add(this.removeRow) ;

        this.frame.addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent e)
            {
               System.exit(1) ;
            }
        }) ;

        this.addColumn.addActionListener(this) ;
        this.addRow.addActionListener(this) ;
        this.removeColumn.addActionListener(this) ;
        this.removeRow.addActionListener(this) ;   

        this.frame.add(this.panel,BorderLayout.NORTH) ;
        this.frame.add(scr,BorderLayout.CENTER) ;
        this.frame.setSize(400,250) ;
        this.frame.setVisible(true) ;

    }

    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource() == addRow)
        {
           this.tableModel.addRow(new Object[]{}) ;
        }

        if(e.getSource() == addColumn)
        {
           this.tableModel.addColumn("新增列") ;
        }

        if(e.getSource() == removeRow)
        {
           int rowCount = this.tableModel.getRowCount()-1 ;
           if(rowCount >= 0)     //判断是否还有行可删除
           {
              this.tableModel.removeRow(rowCount) ;
              this.tableModel.setRowCount(rowCount) ;
           }
        }

        if(e.getSource() == removeColumn)
        {
           int columnCount = this.tableModel.getColumnCount()-1 ;
           if(columnCount>=0)
           {
              TableColumnModel model = this.table.getColumnModel() ;
              TableColumn tableColumn = model.getColumn(columnCount) ;
              model.removeColumn(tableColumn) ;
              this.tableModel.setColumnCount(columnCount) ;
           }
           else System.out.println("已无列可被删除!!!") ;

        }

    }

};

class Tester
{
   public static void main(String args[])
   {
      new MyAction() ;
   }
} ;

时间: 2024-10-10 10:56:09

swing【最后一弹】JTable仿写简单Excel!的相关文章

java写简单Excel 首行是目录 然后前台下载

页面: <form action="${path}/xxx/xxx.do" method="get" > 表格下载:<input type="submit" value="下载"> </form> @RequestMapping("/download") public void download(HttpServletRequest request, HttpServle

仿写一个简单的网站,以及初学前端的一点感悟

本文同时发布在本人个人博客上www.yaoxiaowen.com 这段时间在学习前端,并仿着我们公司官网的设计 tongshai.net, 把官网重新实现了一遍. 主要是因为我们公司的官网设计很简单(就几个静态页面,连什么控件都没用),很适合作为练手项目, 模仿的工程放在了我的另一个测试服务器上. 点击查看. 在仿写过程中,因为网页很简单,所以也没有碰到过什么很纠结的技术问题.仿写一下也就是熟悉一下相关概念. 但是按照我的前端同事的建议,使用了bootstrap 框架,快速浏览了一下这个框架的教

知乎首页的简单仿写

HTML(5)+CSS(3).静态页面仿写 Github链接:https://github.com/nebulium/ZhiHu 大概布局如下,在此布局基础上进一步处理. 切图:图片非高清,不过是非重点.在设计的时候使用到的chrome插件:屏幕尺子(page ruler)和color zilla取色工具. 布局总结:header为position:fixed,且z-index较大.mancolumn和sidebar部分考虑到并不会自适应,设置为position:absolute,这里注意统一用

ASP.NET WebAPI 14 仿写Filter管道

WebAPI中有设计了几种管道(Channel),大概如下:HttpMessageHandler,ActionFilter管道,ExceptionFilter管道.在三种管道中HttpMessageHandler管道与ExceptionFilter管道是基于级别设计的,ActionFilter管道是基于方法级别设计的.对于ActionFilter管道,因为采用的是AOP的思想,所以按方法级别去设计. 在看WebAPI源码过程中对ActionFilter管道中何用的表达示树与闭包等内容之前并没有下

怎么样仿写已知网址的网页?

今天上午在实验室里学习,无意中看到湖北老乡群里爆出了一则外包的消息. 是问有没有回搭建网站.我接了这单活儿.需求很简单,仿照这一个已知的网站做一个静态页面. 工作量不大.他说了,做一个静态网站.因为之前,我曾做过类似的工作,所以我就答应了. 遇到的第一个问题就是评价.他让我开个价.说实话,我当时也蒙了.这个外包估价这个事情,我之前也没做过.在网上搜了下,每个人说法都不一样.看到一个我觉得可以参考的回答.按照做的页面收费. 每个30~50.于是我给他报价是500,理由就是 大概做10个左右的页面,

仿写及比较标哥的iOS时钟动画

一.前言 以前看各种绚丽的UI特效动画代码,采用的方法是会先运行一篇,然后直接去看实现代码.初学时抱着瞻仰的态度去接触,去认识,是没有错的.但是在了解了像素.动画渲染机制,CoreAnimation API,推导过二维.三维的仿射矩阵之后,我们可以改变阅读UI动画博文或者是源码的方式了. Talk is cheap, show me the code——Linus Torvalds. 大量的仿写:一定一定要多写——叶孤城__ 在CodeReview线下大会上的发言. 最近安居客.猿题库.蘑菇街.

linux学习 建立静态库,动态库,写简单的makefile

建立静态库 建立四个文件 bin(可执行文件),lib(库),include(头文件),src(放源文件) 这里的起的库明为add 在src文件中执行 1)gcc -c add.c //编译add.c源文件生成add.o目标文件 2)ar crsv ../lib/ libadd.a add.o //对目标文件*.o进行归档,生成lib*.a, 把这个生成文件放在lib里 3)gcc -o main main.c -L(大些的爱偶,放库的路径)../lib   –l(小写的爱偶,库名为add) a

仿写网易云-排行榜页面

第一次仿写页面(内心还是很鸡冻啊~~~) 还有很多地方没有完善 暂时就先这样吧 以后有机会在加效果 多练习 熟能生巧~ 好喜欢网易云音乐啊~音乐的天堂~希望以后自己也能去网易云工作就好了了~~~~~ 1 <!DOCTYPE html> 2 <html lang="zh-cn"> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Comp

Java用正则表达式写简单账号密码注册判断

Java写简单账号密码注册判断 菜鸟刚学的表达式 练手代码. 1 /*在注册时通常要验证用户名和密码是否合法,运用学习过的知识完成如下操作: 2 3 用户名长度大于等于6位,必须包含数字和英文字母 4 5 密码长度大于等于8位,必须包含特殊符合_或者$,英文字母以及数字 6 7 以上两个条件同时成立注册才能成功. 8 9 10 11 * */ 12 13 import java.util.Scanner; 14 15 import java.util.regex.Matcher; 16 17 i