Chinaunix首页 | 论坛 | 博客
  • 博客访问: 353689
  • 博文数量: 152
  • 博客积分: 6020
  • 博客等级: 准将
  • 技术积分: 850
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-11 19:20
文章分类

全部博文(152)

文章存档

2017年(1)

2010年(1)

2007年(3)

2006年(147)

我的朋友

分类:

2006-04-17 23:47:44

程序分三部分,主程序类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);
 }
}

运行图:

阅读(1274) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~