📄 clientframe.java
字号:
package gengjie;
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import com.borland.jbcl.layout.XYLayout;
import com.borland.jbcl.layout.*;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.awt.Font;
import javax.swing.JTextArea;
import javax.swing.JButton;
import java.awt.Color;
import javax.swing.border.TitledBorder;
import javax.swing.JScrollPane;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
import javax.swing.JOptionPane;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class ClientFrame extends JFrame {
JPanel contentPane;
XYLayout xYLayout1 = new XYLayout();
JPanel jPanel1 = new JPanel();
JLabel jLabel1 = new JLabel();
JLabel jLabel2 = new JLabel();
XYLayout xYLayout2 = new XYLayout();
JTextField jTextField1 = new JTextField();
JLabel jLabel3 = new JLabel();
JTextField jTextField2 = new JTextField();
JLabel jLabel4 = new JLabel();
JTextField jTextField3 = new JTextField();
JButton jButton1 = new JButton();
TitledBorder titledBorder1 = new TitledBorder("");
JPanel jPanel2 = new JPanel();
JLabel jLabel5 = new JLabel();
XYLayout xYLayout3 = new XYLayout();
JScrollPane jScrollPane1 = new JScrollPane();
JTextArea jTextArea1 = new JTextArea();
JButton jButton2 = new JButton();
boolean bConnect=false;
Socket clientSocket;
DataInputStream in;
DataOutputStream out;
public ClientFrame() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
/**
* Component initialization.
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception {
//界面布局设计
contentPane = (JPanel) getContentPane();
contentPane.setLayout(xYLayout1);
setSize(new Dimension(410, 380));
setTitle("聊天客户端");
jPanel1.setBorder(BorderFactory.createEtchedBorder());
jPanel1.setLayout(xYLayout2);
jLabel1.setFont(new java.awt.Font("宋体", Font.PLAIN, 15));
jLabel1.setText("设置区");
jLabel2.setText("服务器IP:");
jTextField1.setText("127.0.0.1");
jLabel3.setText("端口:");
jTextField2.setText("55555");
jLabel4.setText("你要说的话:");
jButton1.setText("发送");
jButton1.addActionListener(new ClientFrame_jButton1_actionAdapter(this));
jPanel2.setBorder(BorderFactory.createEtchedBorder());
jPanel2.setLayout(xYLayout3);
jLabel5.setFont(new java.awt.Font("宋体", Font.PLAIN, 15));
jLabel5.setText("消息区");
jScrollPane1.setBorder(BorderFactory.createEtchedBorder());
jButton2.setText("连接");
jButton2.addActionListener(new ClientFrame_jButton2_actionAdapter(this));
jPanel1.add(jLabel2, new XYConstraints(10, 21, 59, -1));
jPanel1.add(jTextField1, new XYConstraints(71, 21, 157, -1));
jPanel1.add(jLabel3, new XYConstraints(11, 46, -1, -1));
jPanel2.add(jLabel5, new XYConstraints(172, 5, -1, -1));
jScrollPane1.getViewport().add(jTextArea1);
contentPane.add(jLabel4, new XYConstraints(7, 307, 73, 27));
contentPane.add(jTextField3, new XYConstraints(80, 310, 245, 23));
contentPane.add(jButton1, new XYConstraints(329, 313, 64, 21));
jPanel2.add(jScrollPane1, new XYConstraints(2, 27, 390, 185));
contentPane.add(jPanel2, new XYConstraints(4, 84, 397, -1));
jPanel1.add(jTextField2, new XYConstraints(71, 45, 157, 22));
jPanel1.add(jButton2, new XYConstraints(311, 26, 70, 26));
jPanel1.add(jLabel1, new XYConstraints(167, 0, 48, 20));
contentPane.add(jPanel1, new XYConstraints(3, 0, 398, 81));
}
//发送要说的话到服务器事件
public void jButton1_actionPerformed(ActionEvent e) {
if(!bConnect)
{
JOptionPane.showMessageDialog(null,"你还没连接到服务器!","提示",JOptionPane.WARNING_MESSAGE);
return;
}
if(this.jTextField3.getText().length()==0)
{
JOptionPane.showMessageDialog(null,"你不能发送空消息!","提示",JOptionPane.WARNING_MESSAGE);
return;
}
try
{
String localIP=this.clientSocket.getInetAddress().getHostAddress();
String content="『" + localIP + "』"+"对大家说:“"+jTextField3.getText()+"”";
out.writeUTF(content);
}
catch(Exception ex)
{
return;
}
jTextField3.setText("");
}
//连接到服务器事件
public void jButton2_actionPerformed(ActionEvent e) {
if(bConnect)
{
JOptionPane.showMessageDialog(null,"你已经连接到服务器了!","提示",JOptionPane.WARNING_MESSAGE);
return;
}
try
{
ConnectThread connectThread=new ConnectThread(this);
}
catch(Exception ex)
{
return;
}
}
}
class ClientFrame_jButton2_actionAdapter implements ActionListener {
private ClientFrame adaptee;
ClientFrame_jButton2_actionAdapter(ClientFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton2_actionPerformed(e);
}
}
class ClientFrame_jButton1_actionAdapter implements ActionListener {
private ClientFrame adaptee;
ClientFrame_jButton1_actionAdapter(ClientFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
class ConnectThread extends Thread
{
ClientFrame frame;
ConnectThread(ClientFrame frame)
{
this.frame=frame;
try
{
frame.clientSocket=new Socket(frame.jTextField1.getText(),Integer.parseInt(frame.jTextField2.getText()));
frame.in=new DataInputStream(frame.clientSocket.getInputStream());
frame.out=new DataOutputStream(frame.clientSocket.getOutputStream());
}
catch(Exception e)
{
frame.jTextArea1.append("不能连接到服务器,"+e.getMessage()+"!\n");
return;
}
frame.jTextArea1.append("已成功连接到服务器!\n");
frame.bConnect=true;
this.start();
}
public void run()
{
String rec="";
while(true)
{
try
{
rec=frame.in.readUTF();
frame.jTextArea1.append(rec+"\n");
}
catch(Exception e)
{
break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -