用JAVA语言编一个聊天小程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
public class test { public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() { public void run()Biblioteka Baidu{
DrawFrame frame = new DrawFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }); }
{ 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("打开");
JPanel center = new JPanel(); center.setLayout(new FlowLayout()); center.add(new JLabel("昵称:"));
center.add(textField); add(center,BorderLayout.CENTER);
} 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("设置");
JPanel south = new JPanel(); south.setLayout(new BorderLayout());
south.add(textArea2,BorderLayout.NORTH);
JPanel south2 = new JPanel(); south2.setLayout(new FlowLayout()); JButton sent = new JButton("传送文件"); JButton receive = new JButton("接收文件"); //receive.setEnabled(false); JButton sentMessage = new JButton("发送"); south2.add(sent); south2.add(receive);
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; }
catch (Exception e) { e.printStackTrace(); } } } }); //接收文件的按钮的监听器:
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); }
try{ int cat1 = Integer.parseInt(jt1.getText()); pan.setCat1(cat1);//设置对话端口号 int cat2 = Integer.parseInt(jt3.getText()); pan.setCat2(cat2);//设置文件传输端口号 String s = jt2.getText(); pan.setIP(s);//设置 IP 地址 pan.ls(); } catch(Exception e)
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);
while(true) { try {
ds.receive(dp); textArea1.setText(textArea1.getText()+ new String(buf,0,dp.getLength()) + "\r\n"); } catch(Exception e) { e.printStackTrace(); } } } });
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){
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 {
用 java 语言编一个聊天小程序 要求: 使用图形用户界面。 能实现一个聊天室中多人聊天。 可以两人私聊。 提示:使用 socket 通信 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.net.*; import java.io.*;
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);
{ 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); } });
EventQueue.invokeLater(new Runnable() { public void run()Biblioteka Baidu{
DrawFrame frame = new DrawFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }); }
{ 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("打开");
JPanel center = new JPanel(); center.setLayout(new FlowLayout()); center.add(new JLabel("昵称:"));
center.add(textField); add(center,BorderLayout.CENTER);
} 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("设置");
JPanel south = new JPanel(); south.setLayout(new BorderLayout());
south.add(textArea2,BorderLayout.NORTH);
JPanel south2 = new JPanel(); south2.setLayout(new FlowLayout()); JButton sent = new JButton("传送文件"); JButton receive = new JButton("接收文件"); //receive.setEnabled(false); JButton sentMessage = new JButton("发送"); south2.add(sent); south2.add(receive);
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; }
catch (Exception e) { e.printStackTrace(); } } } }); //接收文件的按钮的监听器:
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); }
try{ int cat1 = Integer.parseInt(jt1.getText()); pan.setCat1(cat1);//设置对话端口号 int cat2 = Integer.parseInt(jt3.getText()); pan.setCat2(cat2);//设置文件传输端口号 String s = jt2.getText(); pan.setIP(s);//设置 IP 地址 pan.ls(); } catch(Exception e)
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);
while(true) { try {
ds.receive(dp); textArea1.setText(textArea1.getText()+ new String(buf,0,dp.getLength()) + "\r\n"); } catch(Exception e) { e.printStackTrace(); } } } });
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){
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 {
用 java 语言编一个聊天小程序 要求: 使用图形用户界面。 能实现一个聊天室中多人聊天。 可以两人私聊。 提示:使用 socket 通信 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.net.*; import java.io.*;
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);
{ 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); } });