InvestmentTable

来源:互联网 发布:香港的网络搜索引擎 编辑:程序博客网 时间:2024/05/19 05:41

package model;
import gui.DlgShowTable;

import java.awt.EventQueue;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;

/**
 * @author Administrator
 *
 */
public class InvestmentTable
{
 public InvestmentTable()
 {
  // TODO Auto-generated constructor stub 
 }
 public static void main(String[] args)
 {
  // TODO Auto-generated method stub
  EventQueue.invokeLater(new Runnable()
  {
   public void run()
   {
    JFrame frame = new InvestmentTableFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
   }
  });

 }
}
 class InvestmentTableFrame extends JFrame
 {
  JPopupMenu  popMenu;
  JMenuItem menuItem;
  DlgShowTable dlgShowTable ;
 
  public InvestmentTableFrame()
  {
   setTitle("InvestmentTable");
   setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
   TableModel model  = new  InvestmentTableModel(30,5,10);
   final JTable table = new JTable (model);
   add(new JScrollPane(table));
   menuItem = new JMenuItem("查询数据");
   table.addMouseListener
   (
     new MouseAdapter()
     {
            public   void   mouseClicked(MouseEvent   e)  
               {  
                   if(e.getModifiers()==InputEvent.BUTTON3_MASK)//此处改成   if(e.getButton==MoustEvent.Button3)  
                   {  
                  //  popMenu.show(table, e.getX(), e.getY());
                    int rowIndex = table.rowAtPoint(e.getPoint());
                    int colIndex = table.columnAtPoint(e.getPoint());
                    table.changeSelection(rowIndex, colIndex, e.isControlDown(),e.isShiftDown());
                    popMenu = new JPopupMenu();
//                    menuItem = new JMenuItem("查询数据");
                  
                  //  menuItem.setText("查询数据");
                    popMenu.add(menuItem);
                    System.out.println("right clicked!");
                    popMenu.show(table, e.getX(), e.getY());
                  //  popMenu.show(table, e.getX(), e.getY());
                      }
            }
   });
   menuItem.addActionListener
   (
     new ActionListener()
     {
     public void actionPerformed(ActionEvent e) {
      // TODO Auto-generated method stub
      //TODO 显示数据表的内容的对话框
                    dlgShowTable = new DlgShowTable(table);
                    dlgShowTable.show();
                    System.out.println("menuitem is clicked!");
     }
     }
//     new MouseAdapter()
//     {
//           public   void   mouseClicked(MouseEvent   e)  
//               {  
////                   if(e.getModifiers()==InputEvent.BUTTON2_MASK)//此处改成   if(e.getButton==MoustEvent.Button3)  
////                   {  
//                  //TODO 显示数据表的内容的对话框
//                    dlgShowTable = new DlgShowTable(table);
//                    dlgShowTable.show();
//                    System.out.println("menuitem is clicked!");
//                   
////                      }
//            }
//   }
    
   );
  }
  private static final int  DEFAULT_WIDTH = 600;
  private static final int DEFAULT_HEIGHT = 300; 
 }
 class InvestmentTableModel extends  AbstractTableModel
 {
  public InvestmentTableModel(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 = INITIAL_BALANCE*Math.pow(1+rate, nperiods);
//   Object []futureBalancearray = null;
//   futureBalancearray[0] = (Object)futureBalance;
  // return futureBalance;
   return  Double.valueOf(futureBalance);//futureBalance;//String.format("%.2f", futureBalance);
  }
  public String getColumnName(int c)
  {
   return (c+minRate)+"%";  
  }
  private int years;
  private int minRate;
  private int maxRate;
  private static double INITIAL_BALANCE = 10000.0;
 }
 
 
 

原创粉丝点击