当前位置:
文档之家› 用JAVA语言编一个聊天小程序
用JAVA语言编一个聊天小程序
south2.add(sentMessage); add(south,BorderLayout.SOUTH); south.add(south2,BorderLayout.SOUTH); //发送信息的按钮的监听器: sentMessage.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event)
thread.start(); } public DrawPanel() {
setLayout(new BorderLayout()); JTabbedPane card = new JTabbedPane();
textArea1.setEditable(false); card.add("聊天",textArea1); add(card,BorderLayout.NORTH);
用 java 语言编一个聊天小程序 要求: 使用图形用户界面。 能实现一个聊天室中多人聊天。 可以两人私聊。 提示:使用 socket 通信 import java.awt.*; import java.awt.event.*; import javax.swing.*; import .*; import java.io.*;
} class DrawFrame extends JFrame { public DrawFrame() {
setLocation(100,100); setTitle("我的 QQ"); setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT); //添加菜单项…… JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); JMenu edit = new JMenu("菜单"); menuBar.add(edit); JMenuItem sset = new JMenuItem("设置");
final JFrame jf = new JFrame("设置"); jf.setSize(300,150); jf.setLocation(200,200); jf.setResizable(false); jf.setVisible(true); JPanel jp = new JPanel(); final JTextField jt1 = new JTextField(20); final JTextField jt2 = new JTextField(20); final JTextField jt3 = new JTextField(20); jp.add(new JLabel("聊天端口:")); jf.add(jp); jp.add(jt1); jp.add(new JLabel("目标地址:")); jp.add(jt2); jp.add(new JLabel("文件端口:")); jp.add(jt3); JButton jb1 = new JButton("确定"); JButton jb2 = new JButton("取消"); jp.add(jb1); jp.add(jb2); //设置“设置”按钮 jb1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){
public void setCat2(int cat) { cat2 = cat; } public void setIP(String ip) { IP=ip; } //重置端口号 public void ls() { try {
ds = new DatagramSocket(cat1); ds1 = new DatagramSocket(cat2); } catch(Exception e) { e.printStackTrace(); } thread = new Thread(new Runnable() { public void run() { byte buf[] = new byte[1024];//聊天每次发送文字不能超过 1024b DatagramPacket dp = new DatagramPacket(buf,buf.length);
public class test { public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() { public void run() {
DrawFrame frame = new DrawFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }); }
f.setSize(400,300); JFileChooser chooser = new JFileChooser(); f.add(chooser); int returnVal = chooser.showOpenDialog(f); if(returnVal == JFileChooser.APPROVE_OPTION) { textArea1.append("正在传送文件:"+chooser.getCurrentDirectory()+"\\" +chooser.getSelectedFile().getName()+"\n"); try {
{ textArea1.append(textField.getText()+":"+textArea2.getText()+"\n"); String s; try { s = textField.getText() + ":" + textArea2.getText(); byte[] buf = s.getBytes(); dp = new DatagramPacket(buf,buf.length,InetAddress.getByName(IP),cat1); ds.send(dp); textArea2.setText(""); } catch (Exception ex) { ex.printStackTrace(); } } }); //发送文件的按钮的监听器 sent.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { JFrame f = new JFrame("打开");
while(true) { try {
ds.receive(dp); textArea1.setText(textArea1.getText()+ new String(buf,0,dp.getLength()) + "\r\n"); } catch(Exception e) { e.printStackTrace(); } } } });
JMenuItem eexit = new JMenuItem("退出"); edit.add(sset); edit.addSeparator(); edit.add(eexit); final DrawPanel pan = new DrawPanel(); //添加设置对话框 sset.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event) {
add(pan); pack(); } public static final int DEFAULT_WIDTH = 400; public static final int DEFAULT_HEIGHT = 400; } class DrawPanel extends JPanel { DatagramSocket ds; DatagramPacket dp; DatagramSocket ds1; DatagramPacket dp1; Thread thread; Thread thread1; TextArea textArea1 = new TextArea(10,50); TextArea textArea2 = new TextArea(10,50); JTextField textField = new JTextField(50); static int cat1,cat2; static String IP; public void setCat1(int cat) { cat1 = cat; }
byte[] b = new byte[10248]; FileInputStream fis = new FileInputStream(chooser.getSelectedFile()); DataInputStream dos =new DataInputStream(fis); dos.read(b); dp1 = new DatagramPacket(b,b.length,InetAddress.getByName(IP),cat2); ds1.send(dp1); }
{ e.printStackTrace(); } jf.dispose();//关闭对话框 } }); jb2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ jf.dispose(); } }); } }); eexit.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ System.exit(0); } });