java图形编程实例_Java学习图形界面+网络编程案例---------网络简易通讯

主要思想:

主类继承JPanel,在构造方法中将JFrame设成空布局;在其中适当位置添加组件;实现事件监听处理

DATE:2015-10-31

服务器端代码:

/**

* @author Oyc

* 功能:网络简易测试的服务器端

*

*

*/

package com.NETtestServer;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.image.BufferedImage;

import java.io.BufferedReader;

import java.io.File;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

import javax.imageio.ImageIO;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

public class ServerDemo extends JPanel implements ActionListener{

public static void main(String[] args) {

// TODO Auto-generated method stub

new ServerDemo();

}

//定义组件

JFrame jf;

JTextField SendJTF;

JButton SendJB;

JTextArea jta=null;

JScrollPane jsp=null;

PrintWriter pw;

public ServerDemo(){

this.setLayout(null);

//创建组件

jta=new JTextArea();

jsp=new JScrollPane(jta);

jsp.setBounds(0,50,650,210);

this.add(jsp);

SendJTF=new JTextField(15);

SendJTF.addActionListener(this);

SendJTF.setBackground(Color.lightGray);

SendJTF.setBounds(0,250,650,120);

this.add(SendJTF);

//发送按钮

SendJB=new JButton("发送");

SendJB.setBounds(540,380,80,25);

SendJB.addActionListener(this);

this.add(SendJB);

jf=new JFrame("QQ简易聊天 服务器");

jf.setBounds(400, 100, 660, 445);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jf.add(this);

jf.setVisible(true);

jf.setResizable(false);

//开启监听

try {

//在9988号端口监听

ServerSocket ss=new ServerSocket(9988);

//等待客户端连接

Socket s=ss.accept();

// 接受从客户端发来的信息

InputStreamReader isr=new InputStreamReader(s.getInputStream());

BufferedReader br=new BufferedReader(isr);

//发送准备

pw=new PrintWriter(s.getOutputStream(),true);

while(true){

//读入从客户端发来的信息

String infoClient=br.readLine();

jta.append("客户端:"+infoClient+"\n");

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//设置背景

protected void paintComponent(Graphics g)

{

try {

BufferedImage Background=ImageIO.read(new File("images/QQCHAT.jpg"));

g.drawImage(Background, 0, 0,654, 414,null);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

@Override

//事件监听处理方法

public void actionPerformed(ActionEvent e) {

//发送按钮

if(e.getSource()==SendJB){

String info=SendJTF.getText();

pw.println(info);

SendJTF.setText("");

jta.append("发送:"+info+"\n");

}

}

}

客户端代码:

/**

* /**

* @author Oyc

* 功能:网络简易测试的客户端

*

*/

package com.NETtestClient;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.image.BufferedImage;

import java.io.BufferedReader;

import java.io.File;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.Socket;

import javax.imageio.ImageIO;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

public class ClientDemo extends JPanel implements ActionListener{

public static void main(String[] args) {

// TODO Auto-generated method stub

new ClientDemo();

}

//定义组件

JFrame jf;

JTextField SendJTF;

JButton SendJB;

JTextArea jta=null;

JScrollPane jsp=null;

PrintWriter pw;

public ClientDemo(){

this.setLayout(null);

//创建组件

jta=new JTextArea();

jsp=new JScrollPane(jta);

jsp.setBounds(0,50,650,210);

this.add(jsp);

SendJTF=new JTextField(15);

SendJTF.addActionListener(this);

SendJTF.setBackground(Color.lightGray);

SendJTF.setBounds(0,250,650,120);

this.add(SendJTF);

//发送按钮

SendJB=new JButton("发送");

SendJB.setBounds(536,378,100,25);

SendJB.addActionListener(this);

this.add(SendJB);

jf=new JFrame("QQ简易聊天 客户端");

jf.setBounds(400, 100, 660, 445);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jf.add(this);

jf.setVisible(true);

jf.setResizable(false);

//连接服务器

try {

Socket s=new Socket("127.0.0.1",9988 );

//接受从服务器发来的消息

InputStreamReader isr=new InputStreamReader(s.getInputStream());

BufferedReader br=new BufferedReader(isr);

//发送准备

pw=new PrintWriter(s.getOutputStream(),true);

while(true){

//接收服务器的消息

String infoServer=br.readLine();

jta.append("服务器:"+infoServer+"\n");

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//设置背景

protected void paintComponent(Graphics g)

{

try {

BufferedImage Background=ImageIO.read(new File("images/QQCHAT.jpg"));

g.drawImage(Background, 0, 0,654, 414,null);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

@Override

//事件监听处理方法

public void actionPerformed(ActionEvent e) {

if(e.getSource()==SendJB){

String info=SendJTF.getText();

pw.println(info);

SendJTF.setText("");

jta.append("发送:"+info+"\n");

}

}

}

运行截图:

e3899d96d45c9690fadf8fcd94fef51f.png

f377f992dc7101c1d264eb49a39cf4a8.png

9dc07df8220c235963fe5977175166b3.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值