📄 clieframe.java
字号:
package test;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
public class ClieFrame extends JFrame{
//JPanel contentPane=new JPanel(new FlowLayout());
JPanel contentPane;
//XYLayout xYLayout1=new XYLayout();布局管理器
JButton jButton1;
JLabel jLabel1;
JTextField jTextField1;
JButton jButton2;
JScrollPane jScrollPane1;
JTextArea jTextArea1;
Socket socket1;
InputStream is;
OutputStream os;
BufferedReader br;
PrintWriter pw;
Thread t1=null;
public ClieFrame(){
//启用由传递给此组件的指定事件屏蔽参数所定义的事件
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try{
jbInit();
}catch(Exception e){
e.printStackTrace();
}
}
private void jbInit() {
//contentPane=new JPanel();
jButton1=new JButton("连接服务器");
jLabel1=new JLabel("消息");
jTextField1=new JTextField("Send Data:");
jButton2=new JButton("发送");
jScrollPane1=new JScrollPane();
jTextArea1=new JTextArea("Display Data:");
contentPane=(JPanel)this.getContentPane();
contentPane.setLayout(new BorderLayout(50,40));
//对按钮添加事件侦听器
jButton1.addActionListener(new clieFrame_jButton1_actionAdapter(this));
jButton2.addActionListener(new clieFrame_jButton2_actionAdapter(this));
//contentPane.setLayout(xYLayout1);
this.setVisible(true);
//设定窗口大小
this.setSize(new Dimension(800,600));
this.setTitle("客户端");
//设置窗口的边界
contentPane.setBorder(BorderFactory.createLoweredBevelBorder());
JPanel p1=new JPanel(new FlowLayout(FlowLayout.CENTER,100,20));
//jButton1.setBounds(50, 50, 100, 50);
jButton1.setPreferredSize(new Dimension(100,50));
p1.add(jButton1);
//contentPane.add(jButton1);
//jButton2.setBounds(600, 50, 100, 50);
jButton2.setPreferredSize(new Dimension(100,50));
p1.add(jButton2);
//contentPane.add(jButton2);
jTextField1.setPreferredSize(new Dimension(600,50));
//contentPane.add(jTextField1,BorderLayout.SOUTH);
//p1.add(jTextField1);
contentPane.add(p1,BorderLayout.NORTH);
contentPane.add(jTextField1, BorderLayout.CENTER);
jTextArea1.setPreferredSize(new Dimension(600,300));
contentPane.add(jScrollPane1,BorderLayout.SOUTH);
//jLabel1.setBounds(50, 150, 100, 50);
//contentPane.add(jLabel1);
jScrollPane1.getViewport().add(jTextArea1, null);
//this.add(contentPane, 0);
}
protected void processWindowEvent(WindowEvent e){
super.processWindowEvent(e);
//关闭窗口
if(e.getID()==WindowEvent.WINDOW_CLOSING){
System.exit(0);
}
}
//连接服务器按钮触发函数
public void jButton1_actionPerformed(ActionEvent e) {
try{
socket1=new Socket(InetAddress.getLocalHost(),2000);
JOptionPane.showMessageDialog(this, "连接成功");
}catch(Exception e1){
JOptionPane.showMessageDialog(this, "error:"+e1.toString());
}
try{
jButton1.setEnabled(false);
is=socket1.getInputStream();
os=socket1.getOutputStream();
br=new BufferedReader(new InputStreamReader(is));
pw=new PrintWriter(os);
t1=new Thread(new Receiver());
t1.start();
}catch(Exception e1){
//显示错误提示信息
JOptionPane.showMessageDialog(this, "error:"+e1.toString());
}
}
//发送按钮触发函数
public void jButton2_actionPerformed(ActionEvent e) {
String str="";
if(socket1!=null){
try{
str=jTextField1.getText()+"\n";
jTextArea1.append("To Server:"+str);
pw.write(str);
pw.flush();
if(str.equals("end")){
is.close();
os.close();
br.close();
pw.close();
socket1.close();
jButton1.setEnabled(true);
}
jTextField1.setText("");
}catch(Exception e1){
JOptionPane.showMessageDialog(this, "error:"+e1.toString());
}
}
}
//接收数据线程类
public class Receiver implements Runnable{
public Receiver(){}
public void run(){
String str="";
while(true){
try{
str=br.readLine();
if(str!=null)
jTextArea1.append("From Server:"+str+"\n");
}catch(Exception e){
}
}
}
}
public static void main(String[] args){
ClieFrame user=new ClieFrame();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -