📄 chatroomclient.java
字号:
package day23;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class ChatRoomClient {
private JFrame frame;
private JTextArea area;
private JLabel label;
private JTextField field;
private JButton button;
private Socket s;
private String userName;
private BufferedReader br;
private PrintWriter pw;
public ChatRoomClient(){
frame=new JFrame("聊天室客户端v1.0");
area=new JTextArea(15,30);
label=new JLabel();
field=new JTextField(30);
button=new JButton("发送");
createConnection();
init();
addEventHandler();
}
private void createConnection(){
do {
String hostName = JOptionPane.showInputDialog(frame, "请输入服务器地址:");
String port = JOptionPane.showInputDialog(frame, "请输入端口号:");
try {
s = new Socket(hostName, Integer.parseInt(port));
pw=new PrintWriter(s.getOutputStream());
br=new BufferedReader(new InputStreamReader(s.getInputStream()));
} catch (IOException e) {
JOptionPane.showMessageDialog(frame, "连接参数不正确,请重新输入!");
}
} while (s==null);
userName=JOptionPane.showInputDialog(frame,"请输入用户名:");
label.setText(userName+":");
}
private void init(){
field.setFont(new Font("",Font.BOLD,20));
area.setFont(new Font("",Font.BOLD,24));
JScrollPane jsp=new JScrollPane(area);
JPanel panel=new JPanel();
panel.add(label);
panel.add(field);
panel.add(button);
frame.add(jsp,BorderLayout.CENTER);
frame.add(panel,BorderLayout.SOUTH);
}
private void addEventHandler(){
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
//得到field中的内容,将其写入到pw中,userName+":"+field.getText()
//将field清空
}
});
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent arg0) {
//弹出对话框询问是否确定退出?
//给服务器发送退出请求:userName+":%GOODBYE%"
//等待200毫秒,再关闭socket,退出程序。
}
});
}
public void showMe(){
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
new Thread(){
public void run(){
//不停的从br中读数据,每读到一行就将其显示在area中。
}
}.start();
}
public static void main(String[] args){
new ChatRoomClient().showMe();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -