📄 hotelmanagerframe.java
字号:
package myprojects.hotelmanager;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.table.AbstractTableModel;
import java.util.*;
import javax.swing.table.*;
import java.util.Vector;
import java.util.*;
import java.text.*;
//-----------------导入自定义的包---------------------------
//导入事务处理接口包
import myprojects.transactionController.TransactionController;
import myprojects.checkin.*;
import myprojects.Account.*;
import myprojects.guestroom.*;
import myprojects.hotelmanager.*;
import myprojects.aboutdialog.*;
/**
* @(#)HotelManagerFrame.java
*
* 主界面,处理所有的功能
* 通过TranctionController,控制器模式
* 处理各项事务
*
* @author
* @version 1.00 05/12/25
*/
public class HotelManagerFrame extends JFrame {
TransactionController transactionInterface; //处理主界面&事务模块的接口
Account usingSystemAccount = new Account();
//用表格来表示房间列表
DefaultTableModel roomModel = new DefaultTableModel();
JTable roomTable = new JTable(roomModel);
//存放某个房间住的客人,所登记的所有房间列表
DefaultTableModel choosenRoomModel = new DefaultTableModel();
JTable choosenRoomTable = new JTable(choosenRoomModel);
//////////////////////////////////////////////
HotelManager hotelManager=new HotelManager();
Vector allRoomList = new Vector();
Vector roomListInTable=new Vector() ;
//获取登记客人的信息
Vector checkInInfoList=new Vector();
/**
* The constructor.
*/
public HotelManagerFrame(Account usa) {
usingSystemAccount =usa;
//usingSystemAccount.printAccountInfo();
// 初始化所有模块
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
HotelManagerFrameMenu menuBar = new HotelManagerFrameMenu();
transactionInterface = new TransactionController(usingSystemAccount);
// 设置主框架的布局
Container c = this.getContentPane();
c.setLayout(new BorderLayout());
///////////////////////////////////////////////////
CenterPanel centerPanel = new CenterPanel();
LeftPanel leftPanel = new LeftPanel();
RightPanel rightPanel = new RightPanel();
BottomPanel bottomPanel = new BottomPanel();
c.add(leftPanel,BorderLayout.WEST);
c.add(rightPanel,BorderLayout.EAST);
c.add(centerPanel,BorderLayout.CENTER);
c.add(bottomPanel,BorderLayout.SOUTH);
/////////////////////////////////////////////////////
//设置工具栏
JToolBar ToolBar = new JToolBar();
JButton checkInToolBarButton = new JButton();
JButton reserveToolBarButton = new JButton();
JButton returnRoomButton = new JButton();
ImageIcon CheckInToolBarImage=createImageIcon(".\\images\\CheckInToolBarIcon1.gif");;
ImageIcon reserveToolBarImage=createImageIcon(".\\images\\reserveRoomToolBarIcon1.gif");;
ImageIcon returnRoomToolBarImage=createImageIcon(".\\images\\returnRoomToolBarIcon1.gif");;
checkInToolBarButton.setIcon(CheckInToolBarImage);
checkInToolBarButton.setToolTipText("登记");
reserveToolBarButton.setIcon(reserveToolBarImage);
reserveToolBarButton.setToolTipText("预定");
returnRoomButton.setIcon(returnRoomToolBarImage);
returnRoomButton.setToolTipText("退房");
ToolBar.add(checkInToolBarButton);
ToolBar.add(reserveToolBarButton);
ToolBar.add(returnRoomButton);
c.add(ToolBar, BorderLayout.NORTH);
checkInToolBarButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
transactionInterface.checkInInterface();
}
});
reserveToolBarButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
transactionInterface.reserveInterface();
}
});
returnRoomButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
transactionInterface.returnRoomInterface();
}
});
/////////////////////////////////////////////////////
//主界面添加菜单
setJMenuBar(menuBar);
setTitle("HotelManagerSystem");
setSize(700,500);
setLocation(200,150);
// Show frame.
setVisible(true);
// Add window listener.
this.addWindowListener
(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
HotelManagerFrame.this.windowClosed();
}
}
);
}
class LeftPanel extends JPanel
{
final private int delay = 1000; //一秒钟变化一下
private String s = " "+"00:00:00"+" ";
private JLabel clockLabel; //显示时间
int roomKindMark=0; //mark which the radio button is selected
////////////////////////////////////////////////
JLabel hintRoomKindLabel = new JLabel("房间种类:");
ButtonGroup groupRadioB = new ButtonGroup();
JRadioButton allRoomRadioButton = new JRadioButton("所有房间"); //所有房间
JRadioButton singleRadioButton = new JRadioButton("单人房"); //单人房
JRadioButton doubleRoomRadioButton = new JRadioButton("双人房"); //双人房
JRadioButton standarRoomRadioButton = new JRadioButton("标间"); //标间
JRadioButton suiteRoomRadioButton = new JRadioButton("套房"); //套房
////////////////////////////////////////////////
public LeftPanel()
{
///////////////////////////////////////
groupRadioB.add(allRoomRadioButton);
groupRadioB.add(singleRadioButton);
groupRadioB.add(doubleRoomRadioButton);
groupRadioB.add(standarRoomRadioButton);
groupRadioB.add(suiteRoomRadioButton);
allRoomRadioButton.setSelected(true);
///////////////////////////////////////
setRoomList("所有房间");
///////////////////////////////////////
setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
clockLabel = new JLabel(s);
LineBorder lineBorder = (LineBorder)BorderFactory.createLineBorder(Color.BLUE);
clockLabel.setBorder(lineBorder);
//启动计时器
new javax.swing.Timer(delay,new ActionListener()
{
public void actionPerformed(ActionEvent ee)
{
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
Date d = new Date();
s = " "+sdf.format(d)+" ";
clockLabel.setText(s);
}
}).start();
///////////////////////////////
add(hintRoomKindLabel);
add(Box.createRigidArea(new Dimension(0,10))); //增加空白
add(allRoomRadioButton);
add(Box.createRigidArea(new Dimension(0,10))); //增加空白
add(singleRadioButton);
add(Box.createRigidArea(new Dimension(0,10))); //增加空白
add(doubleRoomRadioButton);
add(Box.createRigidArea(new Dimension(0,10))); //增加空白
add(standarRoomRadioButton);
add(Box.createRigidArea(new Dimension(0,10))); //增加空白
add(suiteRoomRadioButton);
//////////////////////////////////////////
add(Box.createRigidArea(new Dimension(0,40)));
JButton updateCheckInInfoButton= new JButton("更新");//更新客人入住信息
ImageIcon updateButtonIcon = createImageIcon(".\\images\\updateIcon.gif");
updateCheckInInfoButton.setIcon(updateButtonIcon);
add(updateCheckInInfoButton);
add(Box.createRigidArea(new Dimension(0,35)));
add(clockLabel);
//增加一些常用按钮,登记,预定,退房
this.setBorder(new EtchedBorder(EtchedBorder.LOWERED,Color.LIGHT_GRAY,Color.blue));
EmptyBorder emptyBorder = (EmptyBorder)BorderFactory.createEmptyBorder(10,15,10,10);
setBorder(emptyBorder);
updateCheckInInfoButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if(roomKindMark==0){
return;
}
setRoomList("所有房间");
roomKindMark=0;
System.out.println ("roomKindMark = "+roomKindMark);
}
});
allRoomRadioButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if(roomKindMark==0){
return;
}
setRoomList("所有房间");
roomKindMark=0;
System.out.println ("roomKindMark = "+roomKindMark);
}
});
singleRadioButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
//设置一个标志,先判断一下,是不是该情况下的显示房间
//如果不是,则:首先清空房间列表,再从allRoomList跳出满足
//条件的房间显示出来就可以了
//增加一个格子布局的面板,来显示客人个人信息,(如果该房间状态为入住的话)
//在对应的显示客人定的所有房间状态
//如果没有人入住,则对应的客人信息清空显示
//注意清空表格类似于清空链表,或者队列,总是删除第一个,知道表格大小为0位置
if(roomKindMark==1){
//judge the room list is showing the singleRoom or not
//if that ,return
return;
}
//处理单选按钮事件,该处为显示单人间
setRoomList("单人房"); ;
roomKindMark=1;
System.out.println ("roomKindMark = "+roomKindMark);
}
});
doubleRoomRadioButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if(roomKindMark==2){
return;
}
//处理单选按钮事件,该处为显示单人间
setRoomList("双人房");
roomKindMark=2;
System.out.println ("roomKindMark = "+roomKindMark);
}
});
standarRoomRadioButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if(roomKindMark==3){
return;
}
//处理单选按钮事件,该处为显示单人间
setRoomList("标间"); ;
roomKindMark=3;
System.out.println ("roomKindMark = "+roomKindMark);
}
});
suiteRoomRadioButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if(roomKindMark==4){
return;
}
//处理单选按钮事件,该处为显示单人间
setRoomList("套房");
roomKindMark=4;
System.out.println ("roomKindMark = "+roomKindMark);
}
});
//////////////////////////////////////////////////////
}
void setRoomList(String kind){
//就想删除链表一样!!!!!!
//clear up the roomtable ,then, show the single room list
while(roomModel.getRowCount()!=0){
roomModel.removeRow(0);
}
roomListInTable.removeAllElements();
//获得房间状态信息,同步更新
allRoomList = hotelManager.getAllRoomList();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -