Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 385|回复: 0

[Swing学习]使用Swing timer实现Jtable数据定时更新

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-11-6 23:56:14 | 显示全部楼层 |阅读模式
    程序分三部分,主程序类SuperTable.java,框架类SuperTableFrame.java,数据模板类SuperTableModel.java。
       
         
          
           主程序类SuperTable.java,如下:
    package supertable.swing;
    import javax.swing.*;
          
    public class SuperTable {
      public static void main(String[] args){
       JFrame frame = new SuperTableFrame();
       frame.show();
      }
    }
          
          
         
       
      
       
      
    框架类SuperTableFrame.java,如下: package supertable.swing; import java.awt.Container;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent; import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.TableModel; import javax.swing.Action;
    import javax.swing.AbstractAction;
    import javax.swing.Timer; /*
      * 创建日期 2005-3-21
      
      */ /**
      * @author Administrator
      *
      */
    public class SuperTableFrame extends JFrame {
      private JTable table = null;
      private Timer timer = null;
      public SuperTableFrame(){
       timer = new Timer(300,updateTableAction);
       setTitle("SuperTable");
       setSize(300,200);
       addWindowListener(new WindowAdapter(){
        public void windowClosing(WindowEvent e){
         System.exit(0);
        }
       });
       TableModel model = new SuperTableModel(30,5,10);
       table = new JTable(model);
       
       JPanel p = new JPanel();
       addButton(p,"Update",new ActionListener(){
        public void actionPerformed(ActionEvent evt){
         table.validate();
         table.updateUI();
        }
       });
       addButton(p,"Start",new ActionListener(){
        public void actionPerformed(ActionEvent evt){
         timer.start();
        }
       });
       addButton(p,"Stop",new ActionListener(){
        public void actionPerformed(ActionEvent evt){
         timer.stop();
        }
       });
       Container contentPane = getContentPane();
       contentPane.add(new JScrollPane(table),"Center");
       contentPane.add(p,"South");
      }
      public void addButton(Container c,String title,ActionListener a){
       JButton b = new JButton(title);
       c.add(b);
       b.addActionListener(a);
      }
      private Action updateTableAction = new AbstractAction(){
       public void actionPerformed(ActionEvent e){
        table.validate();
        table.updateUI();
       }
      };
    }
    数据模板类SuperTableModel.java,如下: package supertable.swing; import java.text.NumberFormat; import javax.swing.table.AbstractTableModel;
    public class SuperTableModel extends AbstractTableModel {
      private int years;
      private int minRate;
      private int maxRate;
      private static final double INITAL_BALANCE = 100000.0;
      public SuperTableModel(int y,int r1,int r2){
       years = y;
       minRate =r1;
       maxRate = r2;
      }
      public int getRowCount(){
       return years;
      }
      public int getColumnCount(){
       return maxRate -minRate +1;
      }
      public Object getValueAt(int r,int c){
       //double rate = (c + minRate)/100.0;
       //int nperiods = r;
       //double futureBalance = INITAL_BALANCE * Math.pow(1+rate,nperiods);
       
       double rate = Math.random();
       return NumberFormat.getCurrencyInstance().format(rate);
      }
      public String getColumnName(int c){
       double rate = (c+minRate)/100.0;
       return NumberFormat.getPercentInstance().format(rate);
      }
    } 运行图:
      

      
      
       
       

         
       

         
       
      


    源码下载:http://file.javaxxz.com/2014/11/6/235613906.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-25 10:43 , Processed in 0.372264 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表