java在线聊天项目0.2版本 制作客户端窗体,使用swing(用户界面开发工具包)和awt(抽象窗口工具包) BorderLayout布局与GridLayout布局不同之处 JPanel设置大小

代码如下:

package com.swift;

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class ChatClientFrame extends JFrame {

    private static final long serialVersionUID = -118470059355655240L;
    JLabel label_shang=new JLabel();
    JLabel label_xia=new JLabel();
    JTextArea ta = new JTextArea(15, 50);
    JTextField tf = new JTextField(38);
    JButton button=new JButton();

    public ChatClientFrame() {
        setBounds(200, 200, 500, 400);
        setTitle("客户端聊天工具 —— 0.2");
        //对窗口进行大的布局,分为三行一列,在pBasic面板上添加三个面板shang zhong xia
        JPanel pBasic=new JPanel();
        //使用网格布局当然是上中下一样大小的啊,果断放弃
        //pBasic.setLayout(new GridLayout(3,1,5,5));
        //使用BorderLayout
        pBasic.setLayout(new BorderLayout());//不设置默认也是这种布局模式
        setContentPane(pBasic);//把面板放在窗口上,不记得用this.关键字
        JPanel shang=new JPanel();
        JPanel zhong=new JPanel();
        JPanel xia=new JPanel();
        //设置JPanel面板的大小
        shang.setSize(470, 25);
        zhong.setSize(470, 180);
        xia.setSize(470, 40);
        pBasic.add(shang,BorderLayout.NORTH);
        pBasic.add(zhong,BorderLayout.CENTER);
        pBasic.add(xia,BorderLayout.SOUTH);
        shang.setBackground(Color.red);
        zhong.setBackground(Color.yellow);
        xia.setBackground(Color.blue);
        /*
         * 三个面板,上边放一个标签“聊天记录”,中间放一个文本域,
         * 下边分为左中右——分别放标签“输入信息“,文本框和”发送“按钮
         */
        label_shang.setText("聊天记录");
        shang.add(label_shang);
        ta.setLineWrap(true);// 自动换行
        JScrollPane scroll=new JScrollPane(ta);// 增加滚动条,以便不增加行数
        zhong.add(scroll);
        label_xia.setText("输入信息");
        xia.add(label_xia,BorderLayout.WEST);
        xia.add(tf,BorderLayout.CENTER);
        button.setText("发送");
        xia.add(button,BorderLayout.EAST);

        //通过压缩自动调整各个面板
        pack();

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 点关闭按钮同时退出程序
        setVisible(true);
    }

    public static void main(String[] args) {
        // 别忘了创建窗体对象,也可以用生成对象调用其他的方法如launchFrame()
        new ChatClientFrame();
    }

}

使用网格布局,则多个JPanel的大小是一样的,因为网格固定了大小

如果要调整JPanel的大小,需要使用BorderLayout布局方式,这也是默认的布局方式



聊天窗口中有一个basic面板,并在其上添加了三个面板,分别放在上中下三个位置;

下边的面板又添加了三个内容(标签、文本框和按钮),分别放在左中右三个位置;

中间的面板放文本区之前先转变成滚动条状态

效果图如下:

时间: 2024-08-05 17:06:32

java在线聊天项目0.2版本 制作客户端窗体,使用swing(用户界面开发工具包)和awt(抽象窗口工具包) BorderLayout布局与GridLayout布局不同之处 JPanel设置大小的相关文章

java在线聊天项目0.9版 实现把服务端接收到的信息返回给每一个客户端窗口中显示功能之客户端接收

客户端要不断接收服务端发来的信息 与服务端不断接收客户端发来信息相同,使用线程的方法,在线程中循环接收 客户端修改后代码如下: package com.swift; import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; impo

java在线聊天项目1.0版 异常处理——开启多个客户端,关闭一个客户端后,在其他客户端中再发出信息会出现异常的处理

异常一 只开启一个客户端,输入信息后关闭,客户端出现如下异常 根据异常说明 ChatClientFrame客户端117行 提示原因是Socket关闭 分析原因 客户端代码 while (connected) { String str = dis.readUTF(); 当窗口关闭后,Socket已经关闭,读的操作还在继续 处理这个异常,代码如下 catch (SocketException e) { System.out.println("a client has been closed!&quo

java在线聊天项目 swt可视化窗口Design 登录框注册按钮点击改变窗口大小——出现注册面板 实现打开登录框时屏幕居中

登录框注册按钮点击改变窗口大小--出现注册面板  首先用swt可视化设计登录窗口如下图: 此时窗口高度为578 没点击注册时高度为301(可自己定) 注意:注册用户的Jpanel 的border选择Title Border,title属性是"注册用户"    布局Layout选择Absolute Layout 接着,对话框窗口设计好后,双击注册按钮,进行代码编辑,在注册按钮的监听代码中增加一个if判断,当等于301,就给改为窗口高度578,否则改为301 因为使用的是匿名内部类,不能直

java在线聊天项目1.1版 ——开启多个客户端,分别实现注册和登录功能,使用客户端与服务端信息request机制,重构线程,将单独的登录和注册线程合并

实现效果图: eclipse项目中初步整合之前的各个客户端和服务端的窗口与工具类,效果如下图: 已将注册服务器线程RegServer功能放到LoginServer中,使用客户端与服务端的request请求机制,根据请求是注册还是登录,分别进行相应response,客户端根据相应内容判断下一步操作. 发送信息的模式还较为原始,没有使用json方法,但gson包已经导入,支持发送键值对的字符串,及自动解析. 登录对话框LoginDialog类代码如下: package com.swift.frame

java在线聊天项目1.2版 ——开启多个客户端,分别实现数据库注册和登录功能后,成功登陆则登录框消失,好友列表窗出现

登录框消失语句 dispose(); 好友列表窗出现 使用new FriendsFrame(phone,s); 登陆对话框代码修改如下: package com.swift.frame; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.ev

java在线聊天项目1.3版 ——设计好友列表框功能

设计好友列表框功能,思路-- 1.当客户端成功登陆后,则客户端把成功登陆信息发送给服务端, 2.由服务端将接收到来自各个成功登陆的客户端的用户信息添加进好友列表, 3.每当有成功登陆的用户就向各个客户端发送完整好友列表 4.好友列表窗要一直死循环着等待接收服务端不断发来的好友列表信息 注意:登陆窗退出时不要关闭socket 聊天窗退出时不要关闭socket 重新整合服务端各种服务到server 类中,只要服务端一开,即可接收客户端的各种请求(登陆.注册.聊天等) 1.3版客户端代码做了登陆成功后

java在线聊天项目 客户端登陆窗口LoginDialog的注册用户功能

点击下图注册按钮,出现注册用户面板,把手机号和判断相同的密码添加到MySQL数据库中 工作原理: 与单机的软件不同,这个聊天的登录框不能把注册信息直接添加进数据库 而是应当把注册信息发送到服务器 当服务器接收到注册信息后,在服务端把注册信息添加进数据库 首先,做连接数据库的准备 连接数据库需要一个连接数据库的驱动包 -- mysql-connector-java-5.1.7-bin.jar 如果忘记倒入连接mysql数据库的包,会出现java.lang.ClassNotFoundExceptio

java在线聊天项目 实现基本聊天功能后补充的其他功能详细需求分析 及所需要掌握的Java知识基础

补充聊天项目功能,做如下需求分析: 梳理项目开发所需的必要Java知识基础 GUI将使用更快速的swt实现 SWT(Standard Widget Toolkit) Standard Widget Toolkit是一个开源的GUI编程框架,与AWT/Swing有相似的用处,著名的开源IDE-eclipse就是用SWT开发的. 在SWT之前,Sun已经提供了一个跨平台GUI开发工具包就是AWT (Abstract Windowing Toolkit). swt开发包下载地址 链接: https:/

java在线聊天项目 swt可视化窗口Design 重新设计聊天窗口

设计的聊天窗口如下: 制作过程: 首先,在默认的BorderLayout视图下, 上边也就是North处添加一个JPanel,将Layout调整为BorderLayout,West放一个JLabel用来放照片, Center再放一个JPanel,布局调整为BorderLayout,Center和South各方一个JLabel,分别放用户昵称和名言. 下边模仿QQ是一个上下可以自行拆分大小的JSplitPane,调整为垂直的上下模式. 拆分框的下边放一个JPanel,设布局为BorderLayou