⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sjf.java

📁 一个简单的点对点式的聊天
💻 JAVA
字号:
package dianduidian;import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.Point;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.ServerSocket;import java.net.Socket;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.WindowConstants;public class SJF extends javax.swing.JFrame {	{		//Set Look & Feel		try {			javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");		} catch(Exception e) {			e.printStackTrace();		}	}	private JPanel jPanelN;	private JTextField tsend;	private JButton bsend;	private JScrollPane jScrollPane1;	private JPanel jPanelS;	private JTextArea show;	private JLabel jLabel1;	private JButton ac;	private JTextField port;	/**	* Auto-generated main method to display this JFrame	*/	public static void main(String[] args) {		SJF inst = new SJF();		inst.setVisible(true);	}		public SJF() {		super();		initGUI();	}		private void initGUI() {		try {			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);			this.setFocusTraversalKeysEnabled(false);			this.setTitle("\u670d\u52a1\u5668\u7aef\u7a0b\u5e8f");			{				jPanelS = new JPanel();				getContentPane().add(jPanelS, BorderLayout.SOUTH);				FlowLayout jPanelSLayout = new FlowLayout();				jPanelSLayout.setAlignment(FlowLayout.RIGHT);				jPanelS.setLayout(jPanelSLayout);				{					tsend = new JTextField();					jPanelS.add(tsend);					tsend.setSize(32, 20);					tsend.setPreferredSize(new java.awt.Dimension(230, 20));				}				{					bsend = new JButton();					jPanelS.add(bsend);					bsend.setText("\u53d1\u9001\u4fe1\u606f");					bsend.setEnabled(false);					bsend.addActionListener(new ActionListener() {						public void actionPerformed(ActionEvent evt) {							bsendActionPerformed(evt);						}					});				}			}			{				jScrollPane1 = new JScrollPane();				getContentPane().add(jScrollPane1, BorderLayout.CENTER);				{					show = new JTextArea();        			jScrollPane1.setViewportView(show);//					show.setPreferredSize(new java.awt.Dimension(390, 159));				}			}			{				jPanelN = new JPanel();				FlowLayout jPanelNLayout = new FlowLayout();				jPanelNLayout.setAlignment(FlowLayout.RIGHT);				jPanelN.setLayout(jPanelNLayout);				getContentPane().add(jPanelN, BorderLayout.NORTH);				{					jLabel1 = new JLabel();					jPanelN.add(jLabel1);					jLabel1.setText("\u7aef\u53e3");				}				{					port = new JTextField();					jPanelN.add(port);					port.setPreferredSize(new java.awt.Dimension(37, 20));				}				{					ac = new JButton();					jPanelN.add(ac);					ac.setText("\u7b49\u5f85\u8fde\u63a5");					ac.addActionListener(new ActionListener() {						public void actionPerformed(ActionEvent evt) {							acActionPerformed(evt);						}					});				}			}			pack();			setSize(400, 300);		} catch (Exception e) {			e.printStackTrace();		}	}	/**	 * 处理 发送信息 按钮时的方法	 * @param evt	 */	private void bsendActionPerformed(ActionEvent evt) {		//TODO		wd.Write(tsend.getText());		int height = 20;		Point p = new Point();		p.setLocation(0, show.getLineCount() * height);		jScrollPane1.getViewport().setViewPosition(p);		show.append(tsend.getText()+"\n");			}		ServerSocket ss=null;  //等待客户连接	Socket s=null;       //建立连接,并且可以得到 in,out	BufferedReader br=null; // 用来读数据的	BufferedWriter bw=null; // 用来写数据的	WriteData wd=null;	ReadThr rt=null;	/**	 * 当点击,等待连接 按钮时的处理方法	 * @param evt	 */		private void acActionPerformed(ActionEvent evt) {		Ac ac=new Ac();		ac.start();	}	class Ac extends Thread{		@Override		public void run() {			//TODO			try {show.append("等待客户连接"+"\n");				ss=new ServerSocket(Integer.parseInt(port.getText().trim()));				//建立一个ServerSocket连接				show.show();				s=ss.accept();				show.append("客户::"+s.getInetAddress()+"已经连接");				br=new BufferedReader(new InputStreamReader(s.getInputStream()));				bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));				bsend.setEnabled(true);								//启动读数据的线程,并设置为 后台线程				rt=new ReadThr(br,show,jScrollPane1);				rt.setDaemon(true);				rt.start();								wd=new WriteData(bw);							} catch (IOException e) {							show.append(e+"\n");  //显示异常信息			}					}			}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -