编写简单聊天窗口

聊天窗口

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.text.JTextComponent;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.SwingConstants;

import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Scanner;

import javax.swing.JTextArea;

public class jxc extends JFrame {

private JPanel contentPane;
    private JTextField textField;
    private JTextField textField_1;
    private JTextField textField_2;
    private static PrintWriter pw=null;
    private static BufferedReader br=null;
    private static Socket s;
    static Scanner scanner=new Scanner(System.in);
    private JTextField textField_3;
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    jxc frame = new jxc();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

/**
     * Create the frame.
     */
    public jxc() {
        
        setTitle("\u804A\u5929\u5BA4");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 770, 412);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        
        JButton btnNewButton = new JButton("\u53D1\u9001");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                try {    
                  pw=new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
                  br=new BufferedReader(new InputStreamReader(s.getInputStream()));
                  
                  ArrayList list= new ArrayList();
                  list.add("我叫杨朋超");
                  list.add(11);
                  list.add(‘w‘);
                     String str = textField_1.getText();
                  textField_1.setText("");
                  pw.println(str+list);
                  pw.flush();                                   
                  String string=br.readLine();
                  textField.setText(textField.getText()+"\n"+string);
        
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

}            
            
        });
        
        textField = new JTextField();
        textField.setBounds(10, 10, 529, 186);
        contentPane.add(textField);
        textField.setColumns(10);
        btnNewButton.setBounds(31, 329, 93, 23);
        contentPane.add(btnNewButton);
        
        JButton btnNewButton_1 = new JButton("\u53D6\u6D88");
        btnNewButton_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                 String  str= "";
                textField_1.setText(str);
                
            
            }
        });
        btnNewButton_1.setBounds(153, 329, 93, 23);
        contentPane.add(btnNewButton_1);
        
        textField_1 = new JTextField();
        
        textField_1.setBounds(10, 217, 529, 102);
        contentPane.add(textField_1);
        textField_1.setColumns(10);
        
        textField_2 = new JTextField();
        textField_2.setBounds(549, 229, 154, 23);
        contentPane.add(textField_2);
        textField_2.setColumns(10);
        
        JButton btnNewButton_2 = new JButton("\u8FDE\u63A5");
        btnNewButton_2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                     s=new Socket(textField_2.getText(),Integer.parseInt(textField_3.getText()));
                } catch (NumberFormatException | IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            
            }
        });
        btnNewButton_2.setBounds(549, 296, 93, 23);
        contentPane.add(btnNewButton_2);
        
        JButton btnNewButton_3 = new JButton("IP");
        btnNewButton_3.setBounds(549, 196, 93, 23);
        contentPane.add(btnNewButton_3);
        
        JTextArea textArea = new JTextArea();
        textArea.setBounds(638, 124, 4, 24);
        contentPane.add(textArea);
        
        textField_3 = new JTextField();
        textField_3.setBounds(549, 262, 66, 21);
        contentPane.add(textField_3);
        textField_3.setColumns(10);

}
}

时间: 2024-10-17 17:52:43

编写简单聊天窗口的相关文章

关于Socket编写简单聊天工具的总结(原创)

这段时间再看socket编程,虽然现在是刚刚接触,但是还是忍不住想写一篇总结,来激励自己努力学习,写的不好的地方,还请大家指教啊! 下面针对一个简单的发送消息和文件的程序说说吧.   首先是服务器需要准备二个Socket和二个Thread如下: //和客户机进行通信 private Socket sckCommit; //监听客户机 private Socket sckListen; private Thread thdListen; private Thread thdCommit; 对客户机

[简明python教程]学习笔记之编写简单备份脚本

[[email protected] 0503]# cat backup_ver3.py #!/usr/bin/python #filename:backup_ver3.py import os import time #source source=['/root/a.sh','/root/b.sh','/root/c.sh'] #source='/root/c.sh' #backup dir target_dir='/tmp/' today=target_dir+time.strftime('

python编写简单的html登陆页面(3)

1  在python编写简单的html登陆页面(2)的基础上在延伸一下: 可以将静态分配数据,建立表格,存放学生信息 2  加载到静态数据 3  html的编写直接在表格里添加一组数据就行了 4  VS Code上面跟前面的后台类似,添加一个content再链接到html就可以了 @app.route('/content')def content(): return render_template('content.html') return 'content.....'

python编写简单的html登陆页面(2)

1  在python编写简单的html登陆页面(1)的基础上在延伸一下: 可以将动态分配数据,实现页面跳转功能: 2  跳转到新的页面:return render_template('home1.html') 3  后台代码如下 4  前端html:

scapy编写简单的ARP扫描脚本 本课程基于 Python 的 scapy 模块编写,适合有 Python 基础的同学学习,最终完成一个简单的 ARP 扫描脚本。

scapy编写简单的ARP扫描脚本 本课程基于 Python 的 scapy 模块编写,适合有 Python 基础的同学学习,最终完成一个简单的 ARP 扫描脚本.

puppet安装于配置与编写简单模块

1.安装Puppet-server.puppet和facter 1 [[email protected] ~]# yum install puppet puppet-server facter -y #系统会自己安装一些ruby依赖包环境 2.配置puppet.conf注意:这个里面配置了两个certname名称,其中[master]中配置的certname是为所有节点认证用的master名称,[agent]中配置的certname是他本身agent的名称,当然不配置默认是和master的名称是

C#基础视频教程5.1 如何编写简单的超级热键

我们上一节介绍了编写简单计算器,实际上也是出于实用角度(这个计算器只要你肯改,肯定能做的比微软自带的计算器好用).这一节介绍做简单的超级热键(所谓的超级热键是指自定义快捷键的功能) 超级热键的最关键一步是绑定键盘钩子,就是键盘按下一组快捷键,主窗体能够响应(自己做不了或者想不到怎么做,就要百度搜别人有没有成熟的可以借鉴),先来看别人的范例程序(了解什么是带类库输出的项目,右击可以修改成Demo测试运行,直接运行报错) ? 也要学会能生成类库和使用类库,例如我们新建一个类库的项目,看起来跟传统C#

VC++编写简单串口上位机程序

转载: http://blog.sina.com.cn/s/articlelist_1809084904_0_1.html VC++编写简单串口上位机程序 串口通信,MCU跟PC通信经常用到的一种通信方式,做界面.写上位机程序的编程语言.编译环境等不少,VB.C#.LABVIEW等等,我会的语言很 少,C语言用得比较多,但是还没有找到如何用C语言来写串口通信上位机程序的资料,在图书管理找到了用VC++编写串口上位机的资料,参考书籍,用自己相 当蹩脚的C++写出了一个简单的串口上位机程序,分享一下

使用visual c+编写简单的木马程序

如今人们谈"马"色变,因为木马危害用户计算机,窃取银行钱财,当然可以用杀毒软件搞定,其实木马编程也简单,编程语音,c+,易语言,c#都可以制作简单的木马悄悄运行于后台,这里以ivsual c+编写简单的木马为例: Visual C++编程时用到了这些功能,现在我把它组装成一个很简单的木马了. 本代码已封装成类方便代码重用 :1,自我复制.2,修改注册表自动运行.3,关闭进程.4,启动程序.5,重启关机功能. 代码如下:class CTrojanHorse { public://add