Swing程序设计(6)边界布局,网格布局

news2024/11/17 15:34:28

文章目录

  • 前言
  • 一、布局介绍
    • 1.边界布局
    • 2.网格布局
    • 3.网格组布局.
  • 总结

前言

    Swing程序中还有两种方式边界布局,网格布局供程序员使用。这两种布局方式更能体现出软件日常制作的排列布局格式。


一、布局介绍

        1.BorderLayout边界布局

                 语法:new BorderLayout

                 使用场景:c.setLayout( new BorderLayerout )

import java.awt.*;
import javax.swing.*;
//导入相关swing组件

public class Layout extends JFrame{
//继承JFrame窗体类

    public Layout(){
        //编写窗体布局方法
        setTitle("边界布局管理器");
        
        Container c = getContentPane();
        //获取容器

        c.setLayout(new BorderLayout());
        //设置布局方式为:边界布局 括号中实例化

        JButton w = new JButton("狼");
        JButton n = new JButton("狼");
        JButton e = new JButton("狼");
        JButton s = new JButton("狼");
        JButton m = new JButton("羊");
        //创建了五个组件对于五个位置
        
        c.add(w, BorderLayout.WEST);
        c.add(e, BorderLayout.EAST);
        c.add(n, BorderLayout.NORTH);
        c.add(s,BorderLayout.SOUTH);
        c.add(m,BorderLayout.CENTER);
        //向容器中添加组件并且设置好对应的布局位置。

        setBounds(200,200,800,800);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new Layout();
    }
}

        输出结果:

BorderLayout边界布局分为了上北,下南,左西,右东,中间,五个部分组成 

        注意:(1)添加组件时,需要指定区域,否则默认添加到CENTER区

                   (2)同一区域的组件会相互覆盖。

        2.GridLayout网格布局

                语法:new GridLayout(int 列,int 行)

                           new GridLayout(int 列,int 行,int 水平间距,int 垂直间距)

import java.awt.*;
import javax.swing.*;
//导入相关swing组件

public class Layout extends JFrame{
//继承JFrame窗体类

    public Layout(){
        //编写窗体布局方法
        setTitle("边界布局管理器");
        
        Container c = getContentPane();
        //获取容器

        c.setLayout(new GridLayout(4,4,2,2));
        //设置布局方式为:网格布局,设置网格的几行几列,水平竖直间距

        for(int i = 0 ;i<16;i++){
            add(new Button("按钮"+i));       
        }
        //添加组件填满网格
        
        setBounds(200,200,800,800);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new Layout();
    }
}

         输出结果:

3.GridBagLayout网格组布局 

         使用方法:

                GridBagLayout gridBag = new GridBagLayout();

                容器对象.setLayout(gridBag);

                GridBagConstraints 约束对象 = new java.awt.GridBagConstraints();//导入awt包

                容器对象.add(组件对象,约束对象);

        GridBagConstraints常用属性:

常用属性介绍
gridx , gridy组件所在的位置
gridwidth , gridheight组件所占的行数和列数
anchor组件所在的方位
fill组件的填充方式
insets组件与单元格边缘的最小距离
ipadx,ipady组件的首先大小
weightx,weighty一个单元格的最大宽高

        示例: 

import java.awt.*;
import javax.swing.*;
//导入相关swing组件

public class Layout extends JFrame{
//继承JFrame窗体类

    JFrame f = new JFrame();//主窗体
    Container c;//主容器
    void  createFrame(){
        //该方法用于创建窗体
        c = f.getContentPane();
        //方法中容器对象获得了f窗体的容器
        c.setLayout(new GridBagLayout());
        //设置网格组布局

        f.setSize(800,600);
        f.setLocationRelativeTo(null);
        f.setDefaultCloseOperation(EXIT_ON_CLOSE);
        f.setVisible(true);

    }

    void init(){
        //设置网格组组件按钮1
        GridBagConstraints g1 = new GridBagConstraints();
        g1.gridx=1;
        g1.gridy=1;
        c.add(new JButton("按钮1"),g1);

        //设置网格组组件按钮2
        GridBagConstraints g2 = new GridBagConstraints();
        g2.gridx=2;
        g2.gridy=2;
        c.add(new JButton("按钮2"),g2);

        //设置网格组组件按钮3
        GridBagConstraints g3 = new GridBagConstraints();
        g1.gridx=3;
        g1.gridy=3;
        c.add(new JButton("按钮3"),g3);
    }


    public static void main(String[] args) {
        Layout a = new Layout();
        a.createFrame();
        a.init();
        a.f.setVisible(true);
    }
}

输出结果: 

网格组布局可以对于相关的组件可以起到约束作用 


总结

        以上就是的边界布局,网格布局,网格组布局三种swing布局方式的介绍,欢迎在评论区中留言,对于不足的地方以及困惑的地方。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1250356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决几乎任何机器学习问题 -- 学习笔记(组织机器学习项目)

书籍名&#xff1a;Approaching (Almost) Any Machine Learning Problem-解决几乎任何机器学习问题 此专栏记录学习过程&#xff0c;内容包含对这本书的翻译和理解过程 我们首先来看看文件的结构。对于你正在做的任何项目,都要创建一个新文件夹。在本例中,我 将项目命名为 “p…

使用Perplexity AI免费白嫖GPT4的使用次数((智能搜索工具)

一、Perplexity AI是什么 Perplexity AI是一款高质量的智能搜索工具&#xff0c;它可以为用户提供简洁清晰的搜索体验。Perplexity AI内置了基于GPT-4的Copilot搜索功能&#xff0c;用户可以在每四个小时使用五次(白嫖GPT-4)。此外&#xff0c;Perplexity AI有免费和付费&#…

Python是个什么鬼?朋友靠它拿了5个offer

闺蜜乐乐&#xff0c;外院科班出身&#xff0c;手持专八和CATTI证书&#xff0c;没想到找工作时却碰了钉子… 半夜12点&#xff0c;乐乐跟我开启了吐槽模式&#xff1a; 拿到offer的都是小公司的翻译活儿&#xff0c;只能糊个口。稍微好点的平台要求可就多了&#xff0c;不仅语…

以“防方视角”观文件上传功能

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 案例概述02 攻击路径03 防方思路 01 案例概述 这篇文章来自微信公众号“NearSec”&#xff0c;记录的某师傅接到一个hw项目&#xff0c;在充分授权的情况下&#xff0c;针对客户的系统进行渗透测试…

java计算下一个整10分钟时间点

最近工作上遇到需要固定在整10分钟一个周期调度某个任务&#xff0c;所以需要这样一个功能&#xff0c;记录下 package org.example;import com.google.gson.Gson; import org.apache.commons.lang3.time.DateUtils;import java.io.InputStream; import java.util.Calendar; i…

原型 原型对象 原型链

在面向开发对象开发过程中对每一个实例添加方法&#xff0c;会使每一个对象都存在该添加方法造成空间浪费 通过对原型添加公共的属性或方法&#xff0c;使所有实例对象都可访问 原型为了共享公共的成员 prototype 原型: JS为每个构造函数提供一个属性prototype(原型),它的值…

Redis与Mysql的数据强一致性方案

目的 Redis和Msql来保持数据同步&#xff0c;并且强一致&#xff0c;以此来提高对应接口的响应速度&#xff0c;刚开始考虑是用mybatis的二级缓存&#xff0c;发现坑不少&#xff0c;于是决定自己搞 要关注的问题点 操作数据必须是唯一索引 如果更新数据不是唯一索引&#…

原生小程序图表

原生小程序使用图表 话不多说直接进入正题 官方文档: https://www.ucharts.cn/v2/#/ 下载文件 首先去gitee上把文件下载到自己的项目中 https://gitee.com/uCharts/uCharts 找到微信小程序和里面的组件 把里面src下的文件全部下载下来放入自己项目中 项目文件 新建文件…

hdlbits系列verilog解答(Exams/m2014 q4h)-44

文章目录 一、问题描述二、verilog源码三、仿真结果 一、问题描述 实现以下电路&#xff1a; 二、verilog源码 module top_module (input in,output out);assign out in;endmodule三、仿真结果 转载请注明出处&#xff01;

java集合,ArrayList、LinkedList和Vector,多线程场景下如何使用 ArrayList

文章目录 Java集合1.2 流程图关系1.3 底层实现1.4 集合与数组的区别1.4.1 元素类型1.4.2 元素个数 1.5 集合的好处1.6 List集合我们以ArrayList集合为例1.7 迭代器的常用方法1.8 ArrayList、LinkedList和Vector的区别1.8.1 说出ArrayList,Vector, LinkedList的存储性能和特性1.…

【最新版】SolidWorks 2023 SP5.0 完整版安装包+安装教程

分享模式&#xff1a;免费/绿色&#xff0c;按教程安装 下载地址&#xff1a; https://pan.xunlei.com/s/VNL0-DD_ogcRFwy-xi0HUtlyA1?pwdfzqw# 提取码&#xff1a;fzqw SOLIDWORKS 2023新版本对电脑配置要求 更多详细说明请去官网查看。 安装使用方法&#xff1a; 一、卸…

还不会配置Nginx?刷完这篇就够了

Nginx是一个开源的高性能HTTP和反向代理服务器。它可以用于处理静态资源、负载均衡、反向代理和缓存等任务。Nginx被广泛用于构建高可用性、高性能的Web应用程序和网站。它具有低内存消耗、高并发能力和良好的稳定性&#xff0c;因此在互联网领域非常受欢迎。 为什么使用Nginx…

从 RBAC 到 NGAC ,企业如何实现自动化权限管理?

随着各领域加快向数字化、移动化、互联网化的发展&#xff0c;企业信息环境变得庞大复杂&#xff0c;身份和权限管理面临巨大的挑战。为了满足身份管理法规要求并管理风险&#xff0c;企业必须清点、分析和管理用户的访问权限。如今&#xff0c;越来越多的员工采用移动设备进行…

Python Web开发基础知识篇

一&#xff0c;基础知识篇 本片文章会简单地说一些python开发web中所必须的一些基础知识。主要包括HTML和css基础、JavaScript基础、网络编程基础、MySQL数据库基础、Web框架基础等知识。 1,Web简介 Web&#xff0c;全称为World Wide Web&#xff0c;也就是WWW&#xff0c;万…

入选数据结构与算法领域内容榜第26名

入选数据结构与算法领域内容榜第26名

【广州华锐互动】Web3D云展编辑器能为展览行业带来哪些便利?

在数字时代中&#xff0c;传统的展览方式正在被全新的技术和工具所颠覆。其中&#xff0c;最具有革新意义的就是Web3D云展编辑器。这种编辑器以其强大的功能和灵活的应用&#xff0c;正在为展览设计带来革命性的变化。 广州华锐互动开发的Web3D云展编辑器是一种专门用于创建、编…

【【linux C 编程记述 之 VIM的用法讲述】】

linux C 编程记述 之 VIM的用法讲述 我们所说的编写代码包括两部分&#xff1a;代码编写和编译&#xff0c;在Windows下可以使用Visual Studio来完成这两部&#xff0c;可以在 Visual Studio 下编写代码然后直接点击编译就可以了。但是在 Linux 下这两部分是分开的&#xff0c…

MySQL-04-InnoDB存储引擎锁和加锁分析

Latch一般称为闩锁&#xff08;轻量级锁&#xff09;&#xff0c;因为其要求锁定的时间必须非常短。在InnoDB存储引擎中&#xff0c;latch又分为mutex&#xff08;互斥量&#xff09;和rwlock&#xff08;读写锁&#xff09;。 Lock的对象是事务&#xff0c;用来锁定的是…

分布式篇---第五篇

系列文章目录 文章目录 系列文章目录前言一、你知道哪些限流算法?二、说说什么是计数器(固定窗口)算法三、说说什么是滑动窗口算法前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去…

Dubbo配置注册中心设置application的name使用驼峰命名法可能存在的隐藏启动异常问题

原创/朱季谦 首先&#xff0c;先提一个建议&#xff0c;在SpringBootDubbo项目中&#xff0c;Dubbo配置注册中心设置的application命名name的值&#xff0c;最好使用xxx-xxx-xxx这样格式的&#xff0c;避免随便使用驼峰命名。因为使用驼峰命名法&#xff0c;在Spring的IOC容器…