各位大大。我想弄个简单的聊天工具。想把IO与SWING结合。可是不太会。希望各位帮忙。小弟谢了。
package zicq;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.*;public class SimpleServer extends Thread {
Socket skt; public SimpleServer(Socket skt) { this.skt = skt;
} @Override
public void run() {// 该线程实现从对方读取数据
try { InputStream is = skt.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is)); while (true) {
String s = br.readLine();// 从套接字里读
System.out.println(skt.getInetAddress().getHostAddress() + "说:"
+ s);
if (s.equalsIgnoreCase("stop")) { break;
} } } catch (IOException e) { e.printStackTrace();
} } public static void main(String[] args) {
try {
ServerSocket sskt = new ServerSocket(7777);
System.out.println("7777等待连接.............");
Socket skt = sskt.accept();// 阻塞方法
System.out.println("7777连接成功"); SimpleServer ss = new SimpleServer(skt);
ss.start();
// 从键盘读入并写给对方
BufferedReader brs = new BufferedReader(new InputStreamReader(
System.in));// 从键盘中读入数据
OutputStream os = skt.getOutputStream();
PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));// 从Socket里获得输出流 while (true) { String str = brs.readLine();// 从键盘中读 pw.println("服务器:" + str);
pw.flush(); } } catch (IOException e) { e.printStackTrace();
} }
}
package zicq;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;public class SimpleSocket extends Thread {
Socket skt; public SimpleSocket(Socket skt) { this.skt = skt;
} @Override
public void run() {// 该线程实现从对方读取数据
try { InputStream is = skt.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is)); while (true) {
String s = br.readLine();// 从套接字里读
System.out.println(skt.getInetAddress().getHostAddress() + "说:"
+ s);
if (s.equalsIgnoreCase("stop")) { break;
} } } catch (IOException e) { e.printStackTrace();
} } public static void main(String[] args) {
try {
Socket skt = new Socket("127.0.0.1", 7777); SimpleSocket ss = new SimpleSocket(skt);
ss.start();
// 从键盘读入并写给对方
BufferedReader brs = new BufferedReader(new InputStreamReader(
System.in));// 从键盘中读入数据
OutputStream os = skt.getOutputStream();
PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));// 从Socket里获得输出流 while (true) { String str = brs.readLine();// 从键盘中读 pw.println(str);
pw.flush(); } } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
package zicq; import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*; public class Test2 extends JFrame  {
JButton okBut;
JButton  clareBut; 
JTextField addressJtf;//文本框
TextArea content;//文本域
//1.36


/////////////////////////////////////////////////////
public Test2(){
this.setTitle("SayWhat");
this.setBounds(300, 100, 700, 500);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


Container c=this.getContentPane();
JPanel jp1=new JPanel();
JPanel jp2=new JPanel();


c.add(jp1,BorderLayout.NORTH);
c.add(jp2,BorderLayout.SOUTH); JLabel addressLab=new JLabel("(#‵′)凸");
addressJtf=new JTextField(17);


jp1.add(addressLab);
jp1.add(addressJtf);

 okBut=new JButton("确认");
 clareBut=new JButton("清空");

jp2.add(okBut);
jp2.add(clareBut);

    content=new TextArea();
  
c.add(content); okBut.addActionListener(new OtherClass( okBut, clareBut,  addressJtf,
 content) );
clareBut.addActionListener(new OtherClass( okBut, clareBut,  addressJtf,
 content) );
}

public static void main(String[] args) {
new Test2().setVisible(true);
}
}

解决方案 »

  1.   

    package zicq;import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.*;public class SimpleServer extends Thread {
    Socket skt;public SimpleServer(Socket skt) {this.skt = skt;
    }@Override
    public void run() {// 该线程实现从对方读取数据
    try {InputStream is = skt.getInputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(is));while (true) {
    String s = br.readLine();// 从套接字里读
    System.out.println(skt.getInetAddress().getHostAddress() + "说:"
    + s);
    if (s.equalsIgnoreCase("stop")) {break;
    }}} catch (IOException e) {e.printStackTrace();
    }}public static void main(String[] args) {
    try {
    ServerSocket sskt = new ServerSocket(7777);
    System.out.println("7777等待连接.............");
    Socket skt = sskt.accept();// 阻塞方法
    System.out.println("7777连接成功");SimpleServer ss = new SimpleServer(skt);
    ss.start();
    // 从键盘读入并写给对方
    BufferedReader brs = new BufferedReader(new InputStreamReader(
    System.in));// 从键盘中读入数据
    OutputStream os = skt.getOutputStream();
    PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));// 从Socket里获得输出流while (true) {String str = brs.readLine();// 从键盘中读pw.println("服务器:" + str);
    pw.flush();}} catch (IOException e) {e.printStackTrace();
    }}
    }
    package zicq;import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.net.UnknownHostException;public class SimpleSocket extends Thread {
    Socket skt;public SimpleSocket(Socket skt) {this.skt = skt;
    }@Override
    public void run() {// 该线程实现从对方读取数据
    try {InputStream is = skt.getInputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(is));while (true) {
    String s = br.readLine();// 从套接字里读
    System.out.println(skt.getInetAddress().getHostAddress() + "说:"
    + s);
    if (s.equalsIgnoreCase("stop")) {break;
    }}} catch (IOException e) {e.printStackTrace();
    }}public static void main(String[] args) {
    try {
    Socket skt = new Socket("127.0.0.1", 7777);SimpleSocket ss = new SimpleSocket(skt);
    ss.start();
    // 从键盘读入并写给对方
    BufferedReader brs = new BufferedReader(new InputStreamReader(
    System.in));// 从键盘中读入数据
    OutputStream os = skt.getOutputStream();
    PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));// 从Socket里获得输出流while (true) {String str = brs.readLine();// 从键盘中读pw.println(str);
    pw.flush();}} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }}
    }
    package zicq;import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.TextArea;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.*;public class Test2 extends JFrame {
    JButton okBut;
    JButton clareBut; 
    JTextField addressJtf;//文本框
    TextArea content;//文本域
    //1.36
    /////////////////////////////////////////////////////
    public Test2(){
    this.setTitle("SayWhat");
    this.setBounds(300, 100, 700, 500);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container c=this.getContentPane();
    JPanel jp1=new JPanel();
    JPanel jp2=new JPanel();
    c.add(jp1,BorderLayout.NORTH);
    c.add(jp2,BorderLayout.SOUTH);JLabel addressLab=new JLabel("(#‵′)凸");
    addressJtf=new JTextField(17);
    jp1.add(addressLab);
    jp1.add(addressJtf);okBut=new JButton("确认");
    clareBut=new JButton("清空");jp2.add(okBut);
    jp2.add(clareBut);content=new TextArea();
     
    c.add(content);okBut.addActionListener(new OtherClass( okBut, clareBut, addressJtf,
    content) );
    clareBut.addActionListener(new OtherClass( okBut, clareBut, addressJtf,
    content) );
    }public static void main(String[] args) {
    new Test2().setVisible(true);
    }
    }