📄 reserveroomframe.java
字号:
package myprojects.reserve; //预订&取消预订放在一个包中
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.AbstractTableModel;
import javax.swing.event.*;
import java.util.*;
import javax.swing.table.*;
import java.io.*;
import java.util.Vector;
import java.util.*;
import java.text.*;
//-----------------导入自定义的包---------------------------
//导入预订房间处理包
import myprojects.reserve.*;
import myprojects.guestroom.*;
/**
* @(#)ReserveRoomFrame.java
*
* 预订房间界面
*
*
* @author
* @version 1.00 05/12/25
*/
public class ReserveRoomFrame extends JFrame {
JPanel reserveRoomcontentPane;
JLabel guestNameLabel = new JLabel();
JTextField guestNameText = new JTextField();
JLabel guestPhoneLabel = new JLabel();
JTextField guestPhoneText = new JTextField();
JLabel arriveDateLabel = new JLabel();
JTextField arriveDateText = new JTextField();
JLabel guestNumLabel = new JLabel();
JTextField guestNumText = new JTextField();
JPanel guestInfoPanel = new JPanel();
JPanel blankRoomListPanel = new JPanel();
JPanel choosenRoomListPanel = new JPanel();
JLabel hintBlankRoomListLabel = new JLabel();
JPanel affrimOrNotButtonPanel = new JPanel();
JButton removeButton = new JButton();
JButton affrimButton = new JButton();
JButton undoButton = new JButton();
JLabel hintChoosenRoomListLabel = new JLabel();
FlowLayout blankRoomFlowLayout = new FlowLayout();
FlowLayout choosenRoomFlowLayout = new FlowLayout();
//////////////////////////////////////////
//用表格来表示列表
DefaultTableModel blankRoomModel = new DefaultTableModel();
JTable blankRoomTable = new JTable(blankRoomModel);
DefaultTableModel choosenRoomModel = new DefaultTableModel();
JTable choosenRoomTable = new JTable(choosenRoomModel);
//////////////////////////////////////////
//-----------------------------------------------------------------------------//
//生成预订类,管理获取房间状态信息,验证黑名单,更新数据库
ReserveRoom reserveRoom = new ReserveRoom();
Vector blankRoomList=new Vector();
Vector haveChoosenRoomList=new Vector();
//Construct the frame
public ReserveRoomFrame() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
System.out.println("预订房间界面");
}
//Component initialization
private void jbInit() throws Exception {
reserveRoomcontentPane = (JPanel) this.getContentPane();
guestNameLabel.setText("联系人");
guestNameLabel.setBounds(new Rectangle(21, 20, 44, 16));
reserveRoomcontentPane.setMaximumSize(new Dimension(2147483647, 2147483647));
reserveRoomcontentPane.setLayout(null);
this.setSize(400,350);
this.setLocation(250,200);
this.setTitle("预订房间");
this.setResizable(false); //使之不能改变大小
guestNameText.setText("");
guestNameText.setBounds(new Rectangle(69, 17, 63, 22));
guestPhoneLabel.setText("联系电话");
guestPhoneLabel.setBounds(new Rectangle(180, 20, 63, 16));
guestPhoneText.setText("");
guestPhoneText.setBounds(new Rectangle(239, 17, 69, 22));
arriveDateLabel.setText("到达日期");
arriveDateLabel.setBounds(new Rectangle(180, 55, 54, 14));
arriveDateText.setText("");
arriveDateText.setBounds(new Rectangle(239, 51, 69, 22));
guestNumLabel.setText("数目");
guestNumLabel.setBounds(new Rectangle(21, 54, 34, 16));
guestNumText.setText("");
guestNumText.setBounds(new Rectangle(69, 51, 63, 22));
guestInfoPanel.setBounds(new Rectangle(20, 10, 334, 99));
guestInfoPanel.setLayout(null);
blankRoomListPanel.setBounds(new Rectangle(22, 123, 140, 180));
blankRoomListPanel.setLayout(blankRoomFlowLayout);
choosenRoomListPanel.setBounds(new Rectangle(154, 123, 140, 180));
choosenRoomListPanel.setLayout(choosenRoomFlowLayout);
hintBlankRoomListLabel.setText("可以选择的客房");
affrimOrNotButtonPanel.setBounds(new Rectangle(290, 185-20-10, 75, 95+10));
affrimOrNotButtonPanel.setLayout(null);
removeButton.setBounds(new Rectangle(9, 5, 61, 24));
removeButton.setText("取消");
affrimButton.setBounds(new Rectangle(9, 35+5, 61, 24));
affrimButton.setText("确定");
undoButton.setBounds(new Rectangle(10, 65+10, 60, 25));
undoButton.setText("返回");
hintChoosenRoomListLabel.setText("已经选择的客房");
guestInfoPanel.add(guestNameLabel, null);
guestInfoPanel.add(guestPhoneLabel, null);
guestInfoPanel.add(guestPhoneText, null);
guestInfoPanel.add(arriveDateText, null);
guestInfoPanel.add(arriveDateLabel, null);
guestInfoPanel.add(guestNumLabel, null);
guestInfoPanel.add(guestNameText, null);
guestInfoPanel.add(guestNumText, null);
reserveRoomcontentPane.add(guestInfoPanel, null);
reserveRoomcontentPane.add(blankRoomListPanel, null);
blankRoomListPanel.add(hintBlankRoomListLabel, null);
reserveRoomcontentPane.add(affrimOrNotButtonPanel, null);
affrimOrNotButtonPanel.add(removeButton, null);
affrimOrNotButtonPanel.add(undoButton, null);
affrimOrNotButtonPanel.add(affrimButton, null);
reserveRoomcontentPane.add(choosenRoomListPanel, null);
choosenRoomListPanel.add(hintChoosenRoomListLabel, null);
/////////////////////////////////////////////
blankRoomModel.addColumn("房号");
blankRoomModel.addColumn("类别");
blankRoomModel.addColumn("价格");
blankRoomTable.setPreferredScrollableViewportSize(new Dimension(130, 100));
blankRoomTable.setBackground(new Color(255, 255, 210));
blankRoomTable.setRowHeight(20);
blankRoomTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane blanktablescrollpane = new JScrollPane(blankRoomTable);
blankRoomListPanel.add(blanktablescrollpane);
/////////////////////////////////////////////
choosenRoomModel.addColumn("房号");
choosenRoomModel.addColumn("类别");
choosenRoomTable.setPreferredScrollableViewportSize(new Dimension(100, 100));
choosenRoomTable.setBackground(new Color(255, 255, 210));
choosenRoomTable.setRowHeight(20);
choosenRoomTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane choosentablescrollpane = new JScrollPane(choosenRoomTable);
choosenRoomListPanel.add(choosentablescrollpane);
//////////////////////////////////////////////////
//////////////////////////////////////////////////
/* //将当前日期记录成字符串格式,以便存到数据库,到时候,又可以转化回来成为日期对象
arriveDateText.setEditable(false);
SimpleDateFormat simpledf = new SimpleDateFormat("yyyy-MM-dd");
Date currentDate = new Date();
String strCurrentDate = simpledf.format(currentDate)+"";
arriveDateText.setText(strCurrentDate);
*/
/////////////////////////////////////////////
//从ReserveRoom类型对象获取房间状态信息
//设置从ReserveRoom类对象获取的信息: 房间状态信息
//刚开始,reserveRoom.reserveInfo.choosenRoomList放的是空房间信息表
GuestRoom room=new GuestRoom();
blankRoomList=new Vector();
blankRoomList = reserveRoom.reserveInfo.choosenRoomList;
//将房间信息表放到那个Table中/////////////////////////////////////////////////////
for(int i=0;i<blankRoomList.size();i++)
{
room=(GuestRoom)blankRoomList.get(i);
blankRoomModel.addRow(new Object[]{ room.guestRoomId.toString().trim(),
room.guestRoomClass.toString().trim(),
Integer.toString(room.guestRoomFee)
});
}//for
/////////////////////////////////////////////
this.setVisible(true);
//按钮事件处理
undoButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//退出该界面,不保存预订信息
System.out.println("退出该界面,不保存预订信息");
closeFrame();
}
});
/////////////////////////////////////////////////////////////////
removeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
removeRoomfromChoosenList();
}
});
///////////////////////////////////////////////////////////////////
affrimButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//保存预订信息.退出该界
//保存预订信息到reserveRoom.reserveInfo中
//处理非法输入
try{//Integer.parseInt(string)然后catch NumberFormatException,
//如果没有触发Exception,那就是数字了
int checkNumIsInt=Integer.parseInt(guestNumText.getText().toString().trim());
reserveRoom.reserveInfo.setGuestNum(checkNumIsInt);
}catch(NumberFormatException nfe){
JOptionPane.showMessageDialog(null,"输入错误,请重新输入!","ok",
JOptionPane.ERROR_MESSAGE);
return;
}
//判断名字不能含有数字
String name = guestNameText.getText().toString().trim();
if(name.trim().equals("")){
JOptionPane.showMessageDialog(null,"名字不能为空!","ok",
JOptionPane.ERROR_MESSAGE);
return;
}
//处理没有预定房间
if(haveChoosenRoomList.size()==0){
JOptionPane.showMessageDialog(null,"没有预定房间","ok",
JOptionPane.ERROR_MESSAGE);
return;
}
reserveRoom.reserveInfo.setGuestName(name);
reserveRoom.reserveInfo.setGuestPhone(guestPhoneText.getText().toString().trim());
reserveRoom.reserveInfo.setArriveDate(arriveDateText.getText().toString().trim());
reserveRoom.reserveInfo.setChoosenRoomList(haveChoosenRoomList);
reserveRoom.saveReserveInfo();
reserveRoom.reserveInfo.printReserveInfo();
closeFrame();
}
});
//表鼠标双击事件处理
blankRoomTable.addMouseListener(new java.awt.event.MouseAdapter(){
public void mousePressed(MouseEvent e) {
if(e.getSource()==blankRoomTable)
{
if(e.getClickCount()==2) //鼠标双击
{
System.out.println("鼠标双击事件处理");
addRoomToChoosenList_doubleClick(e);
blankRoomTable.setFocusable(false);
}
}
}
});
///////////////////////////////////////////////////////
} //end jbInit
void removeRoomfromChoosenList(){
int index = choosenRoomTable.getSelectedRow();
System.out.println ("删除选择的房间");
System.out.println ("你选择了数组的位置为"+index);
//如果没有选中元素,则不作处理
if(index == -1)
return ;
///////////////////////////////////////
choosenRoomModel.removeRow(index);
haveChoosenRoomList.remove(index);
}
////////////////////////////////////////////////////////////
void addRoomToChoosenList_doubleClick(MouseEvent e) {
int index = blankRoomTable.getSelectedRow();
System.out.println ("你选择了数组的位置为"+index);
//如果没有选中元素,则不作处理
if(index == -1)
return ;
GuestRoom room=new GuestRoom();
room = (GuestRoom)blankRoomList.get(index);
//检查列表,如果已经加入进去了,就不再加,否则,就要
//将房间信息表放到ChoosenRoomListTable中
String roomId="";
System.out.println ("遍历好友数组");
if(haveChoosenRoomList.size() > 0){
int i = 0;
do{
GuestRoom roomtemp=new GuestRoom();
roomtemp = (GuestRoom)haveChoosenRoomList.get(i);
//找到已经加入了
if(room.guestRoomId == roomtemp.guestRoomId)
return;
i++;
}while(i<haveChoosenRoomList.size());
}
haveChoosenRoomList.addElement(room);
choosenRoomModel.addRow(new Object[]{
room.guestRoomId.toString().trim(),
room.guestRoomClass.toString().trim()
});
}
//////////////////////////////////////////////
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
closeFrame();
}
}
void closeFrame() {
this.dispose();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -