📄 clientmainframe.java
字号:
package com.tarena.abs.view.client;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
import com.tarena.abs.model.*;
import java.util.*;
public class ClientMainFrame extends JFrame implements ActionListener{
JLabel message;
JLabel[] labels;
JTextField[] jtfs;
JButton query,reset;
JButton relogin,quit;
JPanel jp1,jp2,jp3;
User user;
Socket socket;
public ClientMainFrame(String fileName){
super("航班机票预定系统--客户端主界面");
message=new JLabel("");
message.setFont(new Font("",Font.BOLD,18));
message.setForeground(Color.RED);
labels=new JLabel[8];
jtfs=new JTextField[5];
labels[0]=new JLabel("航班查询:");
labels[1]=new JLabel("出发地:");
labels[2]=new JLabel("目的地:");
labels[3]=new JLabel("日期:");
labels[4]=new JLabel("年");
labels[5]=new JLabel("月");
labels[6]=new JLabel("日");
labels[7]=new JLabel("** 只接受60天以内的预定");
jtfs[0]=new JTextField(10);//出发地
jtfs[1]=new JTextField(10);//目的地
jtfs[2]=new JTextField(4);//年
jtfs[3]=new JTextField(2);//月
jtfs[4]=new JTextField(2);//日
query=new JButton("查询");
reset=new JButton("清空");
relogin=new JButton("重新登录");
quit=new JButton("退出");
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();
init();
createSocket(fileName);
addEventHandle();
LoginDialog login=new LoginDialog(this,socket);
login.showMe();
}
private void init(){
this.setLayout(new BorderLayout(5,20));
jp1.setLayout(new FlowLayout(FlowLayout.LEFT));
jp1.add(labels[0]);
jp1.add(labels[1]);jp1.add(jtfs[0]);
jp1.add(labels[2]);jp1.add(jtfs[1]);
jp1.add(labels[3]);jp1.add(jtfs[2]);
jp1.add(labels[4]);jp1.add(jtfs[3]);
jp1.add(labels[5]);jp1.add(jtfs[4]);
jp1.add(labels[6]);jp1.add(labels[7]);
jp1.add(query);jp1.add(reset);
this.add(jp1,BorderLayout.NORTH);
this.add(jp2,BorderLayout.CENTER);
jp3.setLayout(new FlowLayout(FlowLayout.LEFT,15,5));
jp3.add(message);
jp3.add(relogin);
jp3.add(quit);
this.add(jp3,BorderLayout.SOUTH);
}
private void addEventHandle(){
query.addActionListener(this);
reset.addActionListener(this);
relogin.addActionListener(this);
quit.addActionListener(this);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent arg0) {
askQuit();
}
});
}
public void showMe(){
this.setSize(1000,700);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
}
public void createSocket(String fileName){
Properties p=new Properties();
FileInputStream fis=null;
try {
fis=new FileInputStream(fileName);
p.load(fis);
String IPAddress=p.getProperty("IPAddress");
int port=Integer.parseInt(p.getProperty("port"));
socket=new Socket(IPAddress,port);
} catch (Exception e) {
JOptionPane.showMessageDialog(this,"不能建立到服务器的连接,请检查网络!");
e.printStackTrace();
System.exit(0);
}finally{
if(fis!=null)try{fis.close();}catch(IOException e){}
}
}
/**
* 此方法询问用户是否确定退出,若用户确定,则关闭系统资源,
* 向服务器发送退出请求,然后退出客户端程序。
* 此方法在用户点击“退出”按钮或单击关闭按钮时被调用。
*
*/
public void askQuit(){
JOptionPane.showConfirmDialog(this,"确定退出?");
}
public void setUser(User user){
this.user=user;
message.setText(user.getWelcomMessage());
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("查询")){
MyDate date=new MyDate(Integer.parseInt(jtfs[2].getText()),
Integer.parseInt(jtfs[3].getText()),
Integer.parseInt(jtfs[4].getText()));
Request req=new Request("flight_query");
req.setParameter("FromAddress",jtfs[0].getText());
req.setParameter("ToAddress",jtfs[1].getText());
req.setParameter("Date",date.simpleString());
//此处将要添加连接服务器的代码。
}else if(e.getActionCommand().equals("清空")){
for(int i=0;i<jtfs.length;i++){
jtfs[i].setText("");
}
}else if(e.getActionCommand().equals("退出")){
askQuit();
}else if(e.getActionCommand().equals("重新登录")){
message.setText("");
user=null;
new LoginDialog(this,socket).showMe();
}
}
public static void main(String[] args){
new ClientMainFrame(".\\airline\\client_config.txt").showMe();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -