eg:jcombobox下拉菜单里有三个值a、b、c,
现在想要使当选择 a 时,对应显示表格 a ;
相应 选择 b 时,对应显示表格 b ;
选择 c ,显示表格 c ;
------解决方案--------------------
这是三个数据模型相同的JTable的控制显示,只是切换JTable的数据模型就可以,你先看看,待会再贴数据模型不同的控制
- Java code
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; } }}