日期:2014-05-20 浏览次数:20738 次
import javax.swing.*; import javax.swing.event.*; import javax.swing.table.*; import java.awt.*; import java.awt.event.*; import java.util.*; import java.util.List; public class JTableDemo4 extends JFrame implements ActionListener{ private JTable[] jTable=new JTable[3]; // private JButton bn1,bn2,bn3; private JComboBox combobox=null; private JPanel panel=null; private MyModel[] model=new MyModel[3]; private JScrollPane s_pane=null; private Container contentPane=null; public JTableDemo4(String title){ super(title); model[0]=new MyModel(2); jTable[0]=new JTable(model[0]); model[1]=new MyModel(4); jTable[1]=new JTable(model[1]); model[2]=new MyModel(6); jTable[2]=new JTable(model[2]); contentPane=this.getContentPane(); combobox=new JComboBox(); combobox.addItem("table1(2 users)"); combobox.addItem("table2(4 users)"); combobox.addItem("table3(6 users)"); combobox.addActionListener(this); panel=new JPanel(); panel.add(combobox); List<User> list1=new ArrayList<User>(); for(int i=0;i<3;i++){ User u=new User(i,"user"+i,"list1"); list1.add(u); } s_pane=new JScrollPane(jTable[0]); contentPane.add(panel,BorderLayout.SOUTH); contentPane.add(s_pane,BorderLayout.CENTER); pack(); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub System.out.println("action performed"); int index=combobox.getSelectedIndex(); System.out.println("index:"+index); jTable[0].setModel(model[index]); jTable[0].updateUI(); // s_pane.removeAll(); // s_pane.add(jTable[index]); //// s_pane=new JScrollPane(); // // s_pane.validate(); // contentPane.validate(); // this.validate(); // this.repaint(); } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub new JTableDemo4("MyDemo"); } class MyModel extends AbstractTableModel{ private ArrayList<User> list; private String [] title_name={"ID","用户名","密码"}; /** * 初始化构造 */ public MyModel(){ list=new ArrayList<User>(); for(int i=0;i<5;i++){ User user=new User(i,"user"+i,"user"+i); this.list.add(user); } /* * 这里数据结构当中加进去多少的数据, * 虚拟机会利用getValueAt(int row,int col)方法 * 全部给取出显示 */ } public MyModel(int userNum){ list=new ArrayList<User>(); for(int i=0;i<userNum;i++){ User user=new User(i,"user"+i,"user"+i); this.list.add(user); } /* * 这里数据结构当中加进去多少的数据, * 虚拟机会利用getValueAt(int row,int col)方法 * 全部给取出显示 */ } public void addRow(long id,String userName,String password){ User user=new User(id,userName,password); list.add(user); } public void removeRaw(int row){ list.remove(row); this.fireTableRowsDeleted(1,row+1); } public int getColumnCount() { // TODO Auto-generated method stub System.out.println("invoke method getColumnCount"); return title_name.length; } public String getColumnName(int col) { System.out.println("invoke method getColumnName"); return title_name[col]; } public int getRowCount() { // TODO Auto-generated method stub return list.size(); } public Object getValueAt(int rowIndex, int columnIndex) { // TODO Auto-generated method stub //System.out.println("invoke method getValueAt"); User result=list.get(rowIndex); return result.get(columnIndex); } public void setValueAt(Object value, int row, int col){ if(col==0) list.get(row).setId((Long)value); if(col==1) list.get(row).setUserName((String)value); if(col==2) list.get(row).setPassword((String)value); this.fireTableCellUpdated(row, col); } public boolean isCellEditable(int rowIndex, int columnIndex){ return true; } /** * 返回数据类型 */ public Class getColumnClass(int col) { return getValueAt(0, col).getClass(); } } class User{ private long id; private String userName; private String password; public User(){} public User(long id,String userName,String password){ this.id=id; this.userName=userName; this.password=password; } public Object get(int i){ if(i==0) return this.id; if(i==1) return this.userName; if(i==2) return this.password; else return null; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public long getId() { return id; } public void setId(long id) { this.id = id; } } }