www.pudn.com > student.rar > Inquest.java


import javax.swing.*; 
import javax.swing.table.DefaultTableModel; 
import java.util.Vector; 
import java.awt.Dimension; 
import java.awt.Toolkit; 
import java.awt.BorderLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
 
class Inquest 
{//学生信息查询类 
	private JFrame frame = new JFrame(); 
	private JSplitPane split; 
	private JPanel panel = new JPanel(); 
	private SourcePanel sourcePanel = new SourcePanel(); 
	private JPanel buttonPanel = new JPanel(); 
	private JPanel tablePanel = new JPanel(); 
	//表格 
	private JScrollPane scroll; 
	protected DefaultTableModel model; 
	protected JTable table; 
	protected Vector> data = new Vector>(); 
	private Vector header = new Vector(); 
	private String[] titles = {"学号","姓名","性别","年龄","专业","家庭住址"}; 
	//按钮 
	private JButton inquest = new JButton(); 
	private JButton cancel = new JButton(); 
	 
	private Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); 
	private ActionListener listener = new Listener(); 
	 
	protected static boolean editable = false;//是否可以编辑 
	private static int WIDTH = 700; 
	private static int HEIGH = 360; 
	 
	private class Listener implements ActionListener 
	{//监听器 
		public void actionPerformed(ActionEvent e) 
		{ 
			if(e.getActionCommand().equals("查询")) 
			{ 
				query(); 
			} 
			if(e.getActionCommand().equals("取消")) 
			{ 
				frame.setVisible(false);	 
			} 
		} 
		private void query() 
		{//查询 
			data.clear(); 
			model.fireTableDataChanged(); 
			for(Vector dataLine:StudentManager.getData()) 
			{ 
				if(sourcePanel.getId().equals(dataLine.elementAt(0))) 
					model.addRow(dataLine); 
				else if(sourcePanel.getName().equals(dataLine.elementAt(1))) 
					model.addRow(dataLine); 
				else if(sourcePanel.getSex().equals(dataLine.elementAt(2))) 
					model.addRow(dataLine); 
				else if(sourcePanel.getAge().equals(dataLine.elementAt(3))) 
					model.addRow(dataLine); 
				else if(sourcePanel.getMajor().equals(dataLine.elementAt(4))) 
					model.addRow(dataLine); 
				else if(sourcePanel.getHome().equals(dataLine.elementAt(5))) 
					model.addRow(dataLine); 
			}		 
		}	 
	} 
	private void addButton(JButton button,String title) 
	{//添加按钮方法 
		button.setText(title); 
		button.addActionListener(listener); 
		buttonPanel.add(button);			 
	} 
	public Inquest(String title) 
	{//构造方法 
		panel.setLayout(new BorderLayout()); 
		panel.add(sourcePanel); 
		panel.add(buttonPanel,"South"); 
		//添加按钮 
		addButton(inquest,"查询"); 
		addButton(cancel,"取消"); 
		//表格初始化 
		for(String str:titles) 
			header.add(str); 
		model = new DefaultTableModel(data,header) 
				{ 
					public boolean isCellEditable(int row,int col) 
					{ 
						return editable;	 
					}	 
				};//表格不允许编辑				 
		table = new JTable(model); 
		table.getColumnModel().getColumn(0).setPreferredWidth(20); 
		table.getColumnModel().getColumn(1).setPreferredWidth(40); 
		table.getColumnModel().getColumn(2).setPreferredWidth(20); 
		table.getColumnModel().getColumn(3).setPreferredWidth(20); 
		table.getColumnModel().getColumn(4).setPreferredWidth(60); 
		table.getColumnModel().getColumn(5).setPreferredWidth(100); 
		scroll = new JScrollPane(table); 
		scroll.setPreferredSize(new Dimension(470,330)); 
		tablePanel.add(scroll); 
		//分割窗格 
		split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,panel,tablePanel); 
		split.setDividerLocation(210); 
		split.setDividerSize(5); 
		 
		frame.add(split); 
		frame.setBounds((dim.width-WIDTH)/2,(dim.height-HEIGH)/2,WIDTH,HEIGH); 
		frame.setResizable(false); 
		frame.setTitle(title); 
	} 
	public void resetButton(JButton button,ActionListener listener) 
	{//重置取消按钮方法 
		buttonPanel.remove(cancel); 
		buttonPanel.add(button); 
		buttonPanel.add(cancel);		 
		button.addActionListener(listener); 
	}		 
	public void show() 
	{//显示方法 
		data.addAll(StudentManager.getData()); 
		editable = false; 
		frame.setVisible(true);			 
	} 
}