火车票查询项目计划进度安排

火车票查询项目计划进度安排

时间

任务分解

完成内容——代码(类、方法等)

界面

逻辑功能

第十三周

主界面设计实现

(车次、出发站、目的站、时间)

Train Ticket.java

TrainTime()

功能:事件监听

Train Ticket.java

 

第十四周

功能:车次查询

          (站—站查询)         

   Query.java

 

 功能:车票查询

Query.java

 

第十五周

功能:提示功能

(提示用户该控件如何使用)

Train Ticket.java

 

功能:数据保存读取功能

(文本文件)

AddData.java

 

功能:购票

AddData.java

 

第十六周

界面优化

 

 

整合及程序测试

 

 

 

             

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;

import java.awt.*;
import java.awt.event.*;
import java.util.*;

import javax.swing.plaf.basic.*;

     //启动类(鼠标监听,列表监听,键盘监听)
public class TrainTime extends JFrame implements
                        ActionListener,MouseListener,ListSelectionListener,KeyListener
{
	//创建描述表格标题的vector
	private Vector<String> vhead = new Vector<String>();
	{
		vhead.add("车次");
		vhead.add("始发站");
		vhead.add("终点站");
		vhead.add("列车类型");
		vhead.add("发站");
		vhead.add("发时");
		vhead.add("到站");
		vhead.add("到时");
	}
	//创建包含表格数据的vector
	private Vector<Vector> vdata = new Vector<Vector>();
	//创建表格型对象
	private DefaultTableModel dtm = new DefaultTableModel(vdata,vhead);
	//创建表格控件
	private JTable jt = new JTable(dtm);
	//将表格控件放到滚动窗体中
	private JScrollPane jspTable = new JScrollPane(jt);
	//创建表格的行排序器
	TableRowSorter sorter = new TableRowSorter(dtm);
	//创建面板,用来查询
	private JPanel jp = new JPanel();
	//创建窗体分割
	private JSplitPane jsp = new JSplitPane(
			JSplitPane.VERTICAL_SPLIT,jspTable,jp);
	
	//创建单选按钮数组
	private JRadioButton[] jrbArray = {
		           new JRadioButton("站站查询",true),
		           new JRadioButton("车次查询"),
		           new JRadioButton("车站所有车次查询")};
	//创建单选按钮组
	private ButtonGroup bgStation = new ButtonGroup();

	//创建标签和文本框
	private JLabel jlStart = new JLabel("出发站");
	private JComboBox jcbStart = new JComboBox();
	private JLabel jlEnd = new JLabel("目的站");
	private JComboBox jcbEnd = new JComboBox();
	private JLabel jlTid = new JLabel("车次");
	private JTextField jtfTname = new JTextField();
	private JLabel jlSid = new JLabel("车站站名");
	private JComboBox jcbSname = new JComboBox();
	//创建按钮
	private JButton jbQuery = new JButton("查询");
	private JButton jbApp = new JButton("附加功能");
	//创建可编辑组合框的默认编辑器
	private BasicComboBoxEditor bcbeStart = new BasicComboBoxEditor();
	//创建组合框的默认类型
	private DefaultComboBoxModel dcbmStart = new DefaultComboBoxModel();
	private BasicComboBoxEditor bcbeEnd = new BasicComboBoxEditor();
	private DefaultComboBoxModel dcbmEnd = new DefaultComboBoxModel();
	private BasicComboBoxEditor bcbeMid = new BasicComboBoxEditor();
	private DefaultComboBoxModel dcbmMid = new DefaultComboBoxModel();
	private BasicComboBoxEditor bcbeSname = new BasicComboBoxEditor();
	private DefaultComboBoxModel dcbmSname = new DefaultComboBoxModel();
	//创建弹出菜单
	PopupMenu popup = new PopupMenu();
	//创建菜单
	Menu jm = new Menu("添加");
	//创建菜单项数组
	MenuItem[] item = {new MenuItem("车次添加"),new MenuItem("车站添加"),
			           new MenuItem("关系添加"),new MenuItem("退出程序")};
	//定义SystemTray成员变量
	SystemTray tray;
	//定义TrayIcon成员变量
	TrayIcon trayIcon;
	public TrainTime()
	{
		this.add(jsp);
		//设置分隔条的位置
		jsp.setDividerLocation(400);
		//设置分隔条大小
		jsp.setDividerSize(2);
		//为表格添加排序器
		jt.setRowSorter(sorter);
		jt.setRowHeight(20);//设置表格行高
		//为表格选择模型注册监听器
		jt.getSelectionModel().addListSelectionListener(this);
		jt.addMouseListener(this);
		//设置表头不可编辑
		jt.getTableHeader().setReorderingAllowed(false);
		//设置JPanel布局为空
		jp.setLayout(null);
		//初始化JRadioButton数组
		initJRadioButton();


		//初始化文本框
		initJTextField();
		//初始化系统托盘
		initTray();
		//加载窗体图标
		Image icon = Toolkit.getDefaultToolkit().getImage("img/icon.gif");
		//设置窗体图标
		this.setIconImage(icon);
		//设置窗体的名称
		this.setTitle("火车时刻表");
		//使最大化按钮不可用
		this.setResizable(false);
		//设置窗体的大小及位置
		this.setBounds(120,50,800,600);
		//设置窗体的可见性
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	
	}
	private void initJRadioButton() {
		// TODO Auto-generated method stub
		for(int i=0;i<jrbArray.length;i++)
		{
			//设置单选按钮的大小
			jrbArray[i].setBounds(200,50+i*30,130,30);
			//将单选按钮加到JPanel中
			jp.add(jrbArray[i]);
			//将单选按钮加到按钮组里面
			bgStation.add(jrbArray[i]);
			//注册事件监听器
			jrbArray[i].addActionListener(this);
		}
		
	}
	
	private void initJTextField() {
		// TODO Auto-generated method stub
		//设置标签大小并将它加入JPanel中
		jlStart.setBounds(150,20,50,30);
		jp.add(jlStart);
		//设置jcbStart的大小及位置
		jcbStart.setBounds(210,25,80,20);
		//设置jcbStart为可编辑状态
		jcbStart.setEditable(true);
		//为jcbStart设置编辑器
		jcbStart.setEditor(bcbeStart);
		//为jcbStart设置Model
		jcbStart.setModel(dcbmStart);
		jp.add(jcbStart);
		//为文本框注册事件监听器
		//jcbStart.addActionListener(this);
		//注册鼠标事件监听器
		jcbStart.getEditor().getEditorComponent().addMouseListener(this);
		//注册键盘监听器
		jcbStart.getEditor().getEditorComponent().addKeyListener(this);
		jlEnd.setBounds(330,20,50,30);
		jp.add(jlEnd);
		jcbEnd.setBounds(390,25,80,20);
		//将jcbEnd设置为可编辑
		jcbEnd.setEditable(true);
		//将jcbEnd设置editor及model
		jcbEnd.setEditor(bcbeEnd);
		jcbEnd.setModel(dcbmEnd);
		jp.add(jcbEnd);

		jlTid.setBounds(400,80,30,30);
		jp.add(jlTid);
		jtfTname.setBounds(460,85,80,20);
		jp.add(jtfTname);
		//为jtfTname添加鼠标监听器
		jtfTname.addMouseListener(this);
		//为jtfTname添加事件监听器
		jtfTname.addActionListener(this);
		jlSid.setBounds(400,110,60,30);
		jp.add(jlSid);
		jcbSname.setBounds(460,115,80,20);
		//将jcbSname设置为可编辑
		jcbSname.setEditable(true);
		//为jcbSname设置editor及model
		jcbSname.setEditor(bcbeSname);
		jcbSname.setModel(dcbmSname);
		jp.add(jcbSname);
		//为jcbSname添加鼠标监听
		jcbSname.getEditor().getEditorComponent().addMouseListener(this);
		//为jcbSname添加键盘监听
		jcbSname.getEditor().getEditorComponent().addKeyListener(this);
		//为jcbSname添加事件监听
		jcbSname.addActionListener(this);
		//设置按钮位置及大小并加到JPanel
		jbQuery.setBounds(580,105,60,30);
		jp.add(jbQuery);
		//为按钮添加事件监听器和鼠标监听器
		jbQuery.addActionListener(this);
		jbQuery.addMouseListener(this);
		jbApp.setBounds(650,105,100,30);
		jp.add(jbApp);
		//添加监听器
		jbApp.addMouseListener(this);
		jbApp.addActionListener(this);
	}
	private void initTray() {
		//添加菜单
		for(int i=0;i<item.length;i++)
		{
			//为菜单注册监听器
			item[i].addActionListener(this);
			//为菜单项数组中前三个菜单项添加到“弹出菜单”
			if(i<3)
			{
				jm.add(item[i]);
			}
		}
	}
	@Override
	public void keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void keyPressed(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void keyReleased(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void valueChanged(ListSelectionEvent e) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void mousePressed(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		
	}
	public static void main(String[] args)
	{
		new TrainTime();
	}
	
}
原文地址:https://www.cnblogs.com/liuyajuan/p/5543324.html