/**
* 功能: 带简易界面的聊天程序
* 从9999端口连接服务器
* 问题:还未实现按enter键发送信息
*/
package com.test3;
import javax.swing.*;import java.net.*;
import java.io.*;
import java.awt.event.*;public class MyClient3 extends JFrame implements ActionListener,KeyListener{ /**
* @param args
*/
//定义需要的组件
JTextArea jta = null;
JTextField jtf = null;
JButton jb = null;
JPanel jp = null;
JScrollPane jsp = null;
PrintWriter pw = null;
public static void main(String[] args) {
// TODO Auto-generated method stub
MyClient3 mc3 = new MyClient3();
}
//构造方法
public MyClient3()
{
jta = new JTextArea();
jtf = new JTextField(10);
jtf.addKeyListener((KeyListener) this);
jb = new JButton("发送");
jb.addActionListener(this);
jp = new JPanel();
jsp = new JScrollPane(jta);
jp.add(jtf);
jp.add(jb);
this.add(jsp,"Center");
this.add(jp,"South");
this.setSize(400,300);
this.setTitle("正在与服务器聊天...");
this.setVisible(true);
try {
//连接服务器
Socket s = new Socket("127.0.0.1", 9999);
pw = new PrintWriter(s.getOutputStream(),true);
//接受来之服务器的信息
InputStreamReader isr = new InputStreamReader(s.getInputStream());
BufferedReader br = new BufferedReader(isr);
//读取来之服务器的信息
while(true)
{
String infoFromServer = br.readLine();
//显示到jta聊天区域
jta.append("服务器:"+infoFromServer+"\r\n");
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } @Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(arg0.getSource()==jb)
{
//得到jtf输入框中的内容
String info = jtf.getText();
//发送给服务器
pw.println(info);
//置空jtf输入框
jtf.setText("");
//把info显示到自己的聊天区域jta
jta.append("客服端:"+info+"\r\n");
}
} @Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
//用户按下回车也发送输入框中的信息
if(arg0.getKeyChar()==KeyEvent.VK_ENTER)
{
//得到jtf输入框中的内容
String info = jtf.getText();
//发送给服务器
pw.println(info);
//置空jtf输入框
jtf.setText("");
//把info显示到自己的聊天区域jta
jta.append("客服端:"+info+"\r\n");
}
} @Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
} @Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}/**
* 带简易界面的服务器和客服端聊天程序
* 这是服务器端,监听9999端口
* 问题:还未实现按enter键发送信息
*/
package com.test3;
import java.net.*;import javax.swing.*;import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.*;public class MyServer3 extends JFrame implements ActionListener,KeyListener{ /**
* @param args
*
*/
//定义需要的组件
JTextArea jta = null;
JTextField jtf = null;
JButton jb = null;
JPanel jp = null;
JScrollPane jsp = null;
PrintWriter pw = null;
public static void main(String[] args) {
// TODO Auto-generated method stub
MyServer3 ms3 = new MyServer3();
}
//构造方法
public MyServer3()
{
jta = new JTextArea();
jtf = new JTextField(10);
jb = new JButton("发送");
jb.addActionListener(this);
jp = new JPanel();
jsp = new JScrollPane(jta);
jp.add(jtf);
jp.add(jb);
this.add(jsp,"Center");
this.add(jp,"South");
this.setSize(400,300);
this.setTitle("正在与客服端聊天...");
this.setVisible(true);
try {
//监听9999端口
ServerSocket ss = new ServerSocket(9999);
//等待客服端连接
Socket s = ss.accept();
//从Socket接收客服端发来的信息
InputStreamReader isr = new InputStreamReader(s.getInputStream());
BufferedReader br = new BufferedReader(isr);
pw = new PrintWriter(s.getOutputStream(),true);
while(true)
{
//接收客服端发来的信息
String infoFromClient = br.readLine();
//把客服端发来的信息显示在jta聊天显示区域并换行
jta.append("客服端:"+infoFromClient+"\r\n");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} @Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if((arg0.getSource()==jb))
{
//如果用户点击了发送按钮,先得到输入框jtf中的内容
String info = jtf.getText();
//把info发送给客服端,并置空输入框jtf
pw.println(info);
jtf.setText("");
//把自己发送给客服端的信息也显示到聊天区域jta
jta.append("服务器:"+info+"\r\n");
}
} @Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if(e.getKeyChar()==KeyEvent.VK_ENTER)
{
String info = jtf.getText();
pw.println(info);
jtf.setText("");
jta.append("服务器:"+info+"\r\n");
}
} @Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
} @Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}
* 功能: 带简易界面的聊天程序
* 从9999端口连接服务器
* 问题:还未实现按enter键发送信息
*/
package com.test3;
import javax.swing.*;import java.net.*;
import java.io.*;
import java.awt.event.*;public class MyClient3 extends JFrame implements ActionListener,KeyListener{ /**
* @param args
*/
//定义需要的组件
JTextArea jta = null;
JTextField jtf = null;
JButton jb = null;
JPanel jp = null;
JScrollPane jsp = null;
PrintWriter pw = null;
public static void main(String[] args) {
// TODO Auto-generated method stub
MyClient3 mc3 = new MyClient3();
}
//构造方法
public MyClient3()
{
jta = new JTextArea();
jtf = new JTextField(10);
jtf.addKeyListener((KeyListener) this);
jb = new JButton("发送");
jb.addActionListener(this);
jp = new JPanel();
jsp = new JScrollPane(jta);
jp.add(jtf);
jp.add(jb);
this.add(jsp,"Center");
this.add(jp,"South");
this.setSize(400,300);
this.setTitle("正在与服务器聊天...");
this.setVisible(true);
try {
//连接服务器
Socket s = new Socket("127.0.0.1", 9999);
pw = new PrintWriter(s.getOutputStream(),true);
//接受来之服务器的信息
InputStreamReader isr = new InputStreamReader(s.getInputStream());
BufferedReader br = new BufferedReader(isr);
//读取来之服务器的信息
while(true)
{
String infoFromServer = br.readLine();
//显示到jta聊天区域
jta.append("服务器:"+infoFromServer+"\r\n");
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } @Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(arg0.getSource()==jb)
{
//得到jtf输入框中的内容
String info = jtf.getText();
//发送给服务器
pw.println(info);
//置空jtf输入框
jtf.setText("");
//把info显示到自己的聊天区域jta
jta.append("客服端:"+info+"\r\n");
}
} @Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
//用户按下回车也发送输入框中的信息
if(arg0.getKeyChar()==KeyEvent.VK_ENTER)
{
//得到jtf输入框中的内容
String info = jtf.getText();
//发送给服务器
pw.println(info);
//置空jtf输入框
jtf.setText("");
//把info显示到自己的聊天区域jta
jta.append("客服端:"+info+"\r\n");
}
} @Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
} @Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}/**
* 带简易界面的服务器和客服端聊天程序
* 这是服务器端,监听9999端口
* 问题:还未实现按enter键发送信息
*/
package com.test3;
import java.net.*;import javax.swing.*;import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.*;public class MyServer3 extends JFrame implements ActionListener,KeyListener{ /**
* @param args
*
*/
//定义需要的组件
JTextArea jta = null;
JTextField jtf = null;
JButton jb = null;
JPanel jp = null;
JScrollPane jsp = null;
PrintWriter pw = null;
public static void main(String[] args) {
// TODO Auto-generated method stub
MyServer3 ms3 = new MyServer3();
}
//构造方法
public MyServer3()
{
jta = new JTextArea();
jtf = new JTextField(10);
jb = new JButton("发送");
jb.addActionListener(this);
jp = new JPanel();
jsp = new JScrollPane(jta);
jp.add(jtf);
jp.add(jb);
this.add(jsp,"Center");
this.add(jp,"South");
this.setSize(400,300);
this.setTitle("正在与客服端聊天...");
this.setVisible(true);
try {
//监听9999端口
ServerSocket ss = new ServerSocket(9999);
//等待客服端连接
Socket s = ss.accept();
//从Socket接收客服端发来的信息
InputStreamReader isr = new InputStreamReader(s.getInputStream());
BufferedReader br = new BufferedReader(isr);
pw = new PrintWriter(s.getOutputStream(),true);
while(true)
{
//接收客服端发来的信息
String infoFromClient = br.readLine();
//把客服端发来的信息显示在jta聊天显示区域并换行
jta.append("客服端:"+infoFromClient+"\r\n");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} @Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if((arg0.getSource()==jb))
{
//如果用户点击了发送按钮,先得到输入框jtf中的内容
String info = jtf.getText();
//把info发送给客服端,并置空输入框jtf
pw.println(info);
jtf.setText("");
//把自己发送给客服端的信息也显示到聊天区域jta
jta.append("服务器:"+info+"\r\n");
}
} @Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if(e.getKeyChar()==KeyEvent.VK_ENTER)
{
String info = jtf.getText();
pw.println(info);
jtf.setText("");
jta.append("服务器:"+info+"\r\n");
}
} @Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
} @Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}
解决方案 »
- 一个有关线程问题的疑惑,比较简单,我是新手,请指教下
- 请教一个字符串和数组的值和引用的问题
- 乱码问题
- 请问这个问题能否用到jdbc的事务回滚?
- 高手请问改怎么修改,运行通过呢?
- 一个有难度的java树状结构题目,100分,请高手帮忙 谢谢
- 两个比较有趣的面试题(有算法题,不限于Java)
- 怎样把数据库读出来的数据写成二维数组形式?急
- 求:哪里有开发一个完整java项目实例的书,谢谢
- (嗨……)怎么样在JTable的第一列放小图标,就像netant或者flashget那样:打个勾表示已成功下载!
- java多线程模拟一下场景
- 想用下面的代码随机产生两个不同的单字符字符串,如“A”,“8”,请帮看看,什么实际仍然会重复?
另外应该使用arg0.getKeyCode()而不是arg0.getKeyChar(),getKeyChar()是给keyTyped事件使用的。