/**
*
*/
package com;
import java.awt.EventQueue;
import java.awt.Point;
import java.awt.event.InputEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
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
}
/**
* @param args
*/
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
{
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));
table.addMouseListener(new MouseAdapter()
{
// public void mouseClicked(MouseEvent e)
// {
// Point mousePoint = e.getPoint();
// System.out.println(table.rowAtPoint(mousePoint));
// if(e.getButton()==MouseEvent.BUTTON3 )
// {
//
// }
//
// }
public void mousePressed(MouseEvent me)
{
JTable table=(JTable)me.getSource();
if((me.getModifiers()&InputEvent.BUTTON3_MASK)!=0)
{
Point p = me.getPoint();
int row = table.rowAtPoint(p);
int column = table.columnAtPoint(p);
if(!me.isControlDown()&!me.isShiftDown()&row!=-1&column!=-1)
table.changeSelection(row, column, me.isControlDown(), me.isShiftDown());
}
System.out.println("confirm");
}
public void mouseReleased(MouseEvent me)
{
// if((me.getModifiers()&InputEvent.BUTTON3_MASK)!=0) //show something
}
});
}
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;
}