如何用java语言设计一个聊天窗口的? 如何用java语言设计一个聊天窗口的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是设计窗口还是设计程序窗口的话,直接把几个文本框和按钮排列好就可以了程序的话,就要设计服务器端和客户端,建立socket连接,并写相应的程序你可以网上下载一个程序看看 首先建立三个类:第一个类是服务器类:即server;第二个类是:client;和一个发送类:sender;具体代码如下:这是server类:package demo;import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.net.*;import java.io.*;public class Server extends JFrame implements Runnable{ JPanel panel; JButton button; JTextField textField; JTextArea textArea; ServerSocket serverSocket; Socket socket; Sender sender; public Server(){ panel=new JPanel(); button=new JButton("Send"); textField=new JTextField(20); textArea=new JTextArea(20,30); panel.add(textArea); panel.add(textField); panel.add(button); button.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ sender.GetString(textField.getText()); } }); this.getContentPane().add(panel); this.setDefaultCloseOperation(this.EXIT_ON_CLOSE); this.setSize(400,500); this.setLocationRelativeTo(null); this.show(); Thread th=new Thread(this); th.start(); } public static void main(String[] args) { Server server=new Server(); } public void run() { try { textArea.append(" waiting connection..."+"\n"); serverSocket = new ServerSocket(6666); socket=serverSocket.accept(); textArea.append("connection success..."+"\n"); //System.out.println("dskldk"); BufferedReader in=new BufferedReader( new InputStreamReader(socket.getInputStream())); PrintWriter out=new PrintWriter( new OutputStreamWriter(socket.getOutputStream())); sender=new Sender(out); while(true){ String str=in.readLine(); textArea.append("Client Say:"+str+"\n"); } } catch (Exception ex) { ex.printStackTrace(); } }}这是client类:package demo;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.net.*;import java.io.*;public class Client extends JFrame implements Runnable{ JPanel panel; JButton button; JTextField textField; JTextArea textArea; ServerSocket serverSocket; Socket socket; Sender sender; public Client(){ panel=new JPanel(); button=new JButton("Sender"); textArea=new JTextArea(20,30); textField=new JTextField(20); panel.add(textArea); panel.add(textField); panel.add(button); button.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ sender.GetString(textField.getText()); } }); this.getContentPane().add(panel); this.setDefaultCloseOperation(this.EXIT_ON_CLOSE); this.setSize(400,500); this.setLocationRelativeTo(null); this.show(); Thread th=new Thread(this); th.start(); } public static void main(String[] args) { Client client=new Client(); } public void run() { try { socket = new Socket("127.0.0.1", 6666); textArea.append("connecting success....."+"\n"); BufferedReader in =new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter out=new PrintWriter(new OutputStreamWriter(socket.getOutputStream())); sender=new Sender(out); while(true){ String str=in.readLine(); textArea.append("Server Say:"+str+"\n"); } } catch (IOException ex) { ex.getStackTrace(); } }}这是sender类package demo;import java.io.*;public class Sender extends Thread{ PrintWriter out; String message; public Sender(PrintWriter out){ this.out =out; this.start(); } public synchronized void run(){ while(true){ if(message==null){ try { this.wait(); } catch (InterruptedException ex) { } } out.println(message); out.flush(); message = null; } } public synchronized void GetString(String message){ this.message=message; this.notify(); }}先运行server,在运行client就可以了.... 就要个聊天窗口的话FieldText和FieldArea就可以了 http://topic.csdn.net/u/20080526/15/ffb2f9ba-41c6-46d5-9a24-4f8d2bb2f24d.html的5楼这是一个聊天窗口 Invalid maximun heap size:-Xmx128Mb 时间与数据库的问题 线程问题 为什么在for循环中x[1][size]!=13呢? 求java原代码 小弟申请当版主! 一个初用jbuilder 7的问题 要在WEB模式下做一个报表,怎么实现? java里有没有类似PASCIAL,C里的枚举型数据???? 求助大神 关于位运算和逻辑运算 高手请进:能否用JAVA来实现更换WXP桌面背景的功能?? 一个基础问题,望高手解答。谢谢!
窗口的话,直接把几个文本框和按钮排列好就可以了程序的话,就要设计服务器端和客户端,建立socket连接,并写相应的程序你可以网上下载一个程序看看
具体代码如下:这是server类:
package demo;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
public class Server extends JFrame implements Runnable{
JPanel panel;
JButton button;
JTextField textField;
JTextArea textArea;
ServerSocket serverSocket;
Socket socket;
Sender sender; public Server(){
panel=new JPanel();
button=new JButton("Send");
textField=new JTextField(20);
textArea=new JTextArea(20,30);
panel.add(textArea);
panel.add(textField);
panel.add(button);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
sender.GetString(textField.getText());
}
}); this.getContentPane().add(panel);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
this.setSize(400,500);
this.setLocationRelativeTo(null);
this.show();
Thread th=new Thread(this);
th.start();
}
public static void main(String[] args) {
Server server=new Server();
} public void run() {
try {
textArea.append(" waiting connection..."+"\n");
serverSocket = new ServerSocket(6666);
socket=serverSocket.accept();
textArea.append("connection success..."+"\n");
//System.out.println("dskldk");
BufferedReader in=new BufferedReader(
new InputStreamReader(socket.getInputStream()));
PrintWriter out=new PrintWriter(
new OutputStreamWriter(socket.getOutputStream()));
sender=new Sender(out);
while(true){
String str=in.readLine();
textArea.append("Client Say:"+str+"\n");
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
这是client类:
package demo;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
public class Client extends JFrame implements Runnable{
JPanel panel;
JButton button;
JTextField textField;
JTextArea textArea;
ServerSocket serverSocket;
Socket socket;
Sender sender;
public Client(){
panel=new JPanel();
button=new JButton("Sender");
textArea=new JTextArea(20,30);
textField=new JTextField(20);
panel.add(textArea);
panel.add(textField);
panel.add(button);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
sender.GetString(textField.getText());
}
});
this.getContentPane().add(panel);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
this.setSize(400,500);
this.setLocationRelativeTo(null);
this.show();
Thread th=new Thread(this);
th.start(); }
public static void main(String[] args) {
Client client=new Client();
} public void run() {
try {
socket = new Socket("127.0.0.1", 6666);
textArea.append("connecting success....."+"\n");
BufferedReader in =new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out=new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
sender=new Sender(out); while(true){
String str=in.readLine();
textArea.append("Server Say:"+str+"\n");
}
}
catch (IOException ex) {
ex.getStackTrace();
}
}
}
这是sender类
package demo;
import java.io.*;
public class Sender extends Thread{
PrintWriter out;
String message;
public Sender(PrintWriter out){
this.out =out;
this.start();
}
public synchronized void run(){
while(true){
if(message==null){
try {
this.wait();
}
catch (InterruptedException ex) {
}
}
out.println(message);
out.flush();
message = null;
}
}
public synchronized void GetString(String message){
this.message=message;
this.notify();
}
}
先运行server,在运行client就可以了....
的5楼这是一个聊天窗口