日期:2014-05-20 浏览次数:20800 次
import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.net.*; //import java.io.*; public class LanSQQ { public static void main(String[] args) { //InetAddress server=InetAddress.getByName(); QQDL qqdl=new QQDL(); qqdl.setTitle("乞丐QQ"); qqdl.setSize(200,150); qqdl.setLocation(600,400); qqdl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); qqdl.setVisible(true); //if(qqdl.txtLZ.getText().equals("y")) { //qqdl.setVisible(false); //QQPanel QQ = new QQPanel(/*qqdl.txtXM.getText(), qqdl.LabIp.getText()*/); //QQ.setTitle("乞丐QQ"); //QQ.setSize(400, 500); //QQ.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //QQ.setVisible(true); } } class QQDL extends JFrame implements ActionListener { /** * */ private static final long serialVersionUID = 6903763380037544539L; private JLabel LabXX =new JLabel("请输入您的信息"); private JLabel LabXM =new JLabel("姓 名"); JTextField txtXM =new JTextField(); JLabel LabIp =new JLabel("IP地址"); private JTextField txtIp=new JTextField(); private JButton bntDL =new JButton("登陆"); public QQDL() { //ActionListener al=new LAFActionlistener(); //bntDL.addActionListener(al); bntDL.addActionListener(this); JPanel pa=new JPanel(); pa.add(LabXX); getContentPane().add(pa,BorderLayout.NORTH); JPanel pb=new JPanel(); pb.setLayout(new GridLayout(2,2)); pb.add(LabXM); pb.add(txtXM); pb.add(LabIp); pb.add(txtIp); getContentPane().add(pb,BorderLayout.CENTER); JPanel pc=new JPanel(); pc.add(new JLabel()); pc.add(bntDL); getContentPane().add(pc,BorderLayout.SOUTH); } public void actionPerformed(ActionEvent e) { Object shi=e.getSource(); QQPanel QQ=new QQPanel(txtXM.getText(),txtIp.getText()); QQ.setTitle("乞丐QQ"); QQ.setSize(400,500); QQ.setLocation(550,200); QQ.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); QQ.setVisible(true); if(shi==bntDL){this.setVisible(false);} } } class QQSender extends Thread { private InetAddress server; private int port; private DatagramSocket dsocket; private JTextArea txtFS; public QQSender(InetAddress server,int port,DatagramSocket dsocket,JTextArea txtFS) { this.server=server; this.port=port; this.dsocket=dsocket; this.txtFS=txtFS; } public void run() { try { while (true) { byte[] data = (txtFS.getText()).getBytes(); DatagramPacket outgoing = new DatagramPacket(data, data.length, server, port); dsocket.send(outgoing); } } catch (Exception e) { } } } class QQReceiver extends Thread { //private InetAddress server; //private int port; private DatagramSocket dsocket; private JTextArea txtLiao; public QQReceiver(InetAddress server,int port,DatagramSocket dsocket,JTextArea txtLiao) { //this.server=server; //this.port=port; this.dsocket=dsocket; this.txtLiao=txtLiao; setName("LanSQQ-Receiver"); } public void run() { byte[] buffer=new byte[10000]; try { while(true) { DatagramPacket incom=new DatagramPacket(buffer,buffer.length); dsocket.receive(incom); String data=new String(incom.getData(),0,incom.getLength()); txtLiao.append(data); } }catch(Exception e) { }finally { } } } class QQPanel extends JFrame { /** * */ private static final long serialVersionUID = -7871881624202450654L; private DatagramSocket dsocket; private JLabel LiaoLabel =new JLabel("聊天记录"); private JTextArea txtLiao =new JTextArea(); private JTextArea txtFS =new JTextArea(); private JButton bntFS =new JButton("发送"); private String yh; private String ip; public QQPanel(String yh,String ip) { this.yh=yh; this.ip=ip; ActionListener al=new LAFActionlistener(); bntFS.addActionListener(al); JPanel p1=new JPanel(); p1.setLayout(new GridLayout(1,3)); p1.add(LiaoLabel); p1.add(new JLabel()); p1.add(new JLabel()); getContentPane().add(p1,BorderLayout.NORTH); JPanel p2=new JPanel(); txtLiao.setBackground(Color.LIGHT_GRAY); txtLiao.setLineWrap(true); txtLiao.setEditable(false); txtFS.setLineWrap(true); txtFS.setBackground(Color.LIGHT_GRAY); JScrollPane s1=new JScrollPane(txtLiao); JScrollPane s2=new JScrollPane(txtFS); //s1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); //s2.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); p2.setLayout(new GridLayout(2,1,5,5)); p2.add(s1); p2.add(s2); getContentPane().add(p2,BorderLayout.CENTER); JPanel p3=new JPanel(); p3.setLayout(new GridLayout(1,3)); p3.add(new JLabel()); p3.add(new JLabel());; p3.add(bntFS); getContentPane().add(p3,BorderLayout.SOUTH); try { dsocket=new DatagramSocket(8000); new QQSender(InetAddress.getByName(this.ip), 8080, dsocket, txtFS).start(); System.out.println("ok!"); } catch (Exception e) { } } class LAFActionlistener implements ActionListener { public void actionPerformed(ActionEvent e) { String ss=txtFS.getText(); String sss=yh+":"+"\n"+ss+"\n"; txtFS.setText(""); //txtLiao.append(yh); txtLiao.append(sss); try { new QQSender(InetAddress.getByName(ip), 8080, dsocket, txtFS).start(); System.out.println("yes!"); } catch (Exception a) { // TODO: handle exception } } } }