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;
}