GridBagLayout()的使用方法
GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的,
GridBagLayout
类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直、水平或沿它们的基线对齐。
每个 GridBagLayout
对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为显示区域。
下面就通过一个记事本案例去说明GridBagLayout的使用方法。
分析:
带有箭头的说明可以拉伸的。
4占用4个格子,6占用4个格子。如果设置6可以拉伸了,那么4也会跟着拉伸。
但是如果设置4拉伸,那么7所在的列也可以拉伸,所以4不能设置拉伸。我们应该设置4是跟随6进行拉伸。
灰色的线是为了看清布局的大概,组件占用的格子数。
运行时的显示效果
- import java.awt.*;
- import javax.swing.*;
- public class GridBagDemo extends JFrame {
- public static void main(String args[]) {
- GridBagDemo demo = new GridBagDemo();
- }
- public GridBagDemo() {
- init();
- this.setSize(600,600);
- this.setVisible(true);
- }
- public void init() {
- j1 = new JButton("打开");
- j2 = new JButton("保存");
- j3 = new JButton("另存为");
- j4 = new JPanel();
- String[] str = { "java笔记", "C#笔记", "HTML5笔记" };
- j5 = new JComboBox(str);
- j6 = new JTextField();
- j7 = new JButton("清空");
- j8 = new JList(str);
- j9 = new JTextArea();
- j9.setBackground(Color.PINK);//为了看出效果,设置了颜色
- GridBagLayout layout = new GridBagLayout();
- this.setLayout(layout);
- this.add(j1);//把组件添加进jframe
- this.add(j2);
- this.add(j3);
- this.add(j4);
- this.add(j5);
- this.add(j6);
- this.add(j7);
- this.add(j8);
- this.add(j9);
- GridBagConstraints s= new GridBagConstraints();//定义一个GridBagConstraints,
- //是用来控制添加进的组件的显示位置
- s.fill = GridBagConstraints.BOTH;
- //该方法是为了设置如果组件所在的区域比组件本身要大时的显示情况
- //NONE:不调整组件大小。
- //HORIZONTAL:加宽组件,使它在水平方向上填满其显示区域,但是不改变高度。
- //VERTICAL:加高组件,使它在垂直方向上填满其显示区域,但是不改变宽度。
- //BOTH:使组件完全填满其显示区域。
- s.gridwidth=1;//该方法是设置组件水平所占用的格子数,如果为0,就说明该组件是该行的最后一个
- s.weightx = 0;//该方法设置组件水平的拉伸幅度,如果为0就说明不拉伸,不为0就随着窗口增大进行拉伸,0到1之间
- s.weighty=0;//该方法设置组件垂直的拉伸幅度,如果为0就说明不拉伸,不为0就随着窗口增大进行拉伸,0到1之间
- layout.setConstraints(j1, s);//设置组件
- s.gridwidth=1;
- s.weightx = 0;
- s.weighty=0;
- layout.setConstraints(j2, s);
- s.gridwidth=1;
- s.weightx = 0;
- s.weighty=0;
- layout.setConstraints(j3, s);
- s.gridwidth=0;//该方法是设置组件水平所占用的格子数,如果为0,就说明该组件是该行的最后一个
- s.weightx = 0;//不能为1,j4是占了4个格,并且可以横向拉伸,
- //但是如果为1,后面行的列的格也会跟着拉伸,导致j7所在的列也可以拉伸
- //所以应该是跟着j6进行拉伸
- s.weighty=0;
- layout.setConstraints(j4, s)
- ;s.gridwidth=2;
- s.weightx = 0;
- s.weighty=0;
- layout.setConstraints(j5, s);
- ;s.gridwidth=4;
- s.weightx = 1;
- s.weighty=0;
- layout.setConstraints(j6, s);
- ;s.gridwidth=0;
- s.weightx = 0;
- s.weighty=0;
- layout.setConstraints(j7, s);
- ;s.gridwidth=2;
- s.weightx = 0;
- s.weighty=1;
- layout.setConstraints(j8, s);
- ;s.gridwidth=5;
- s.weightx = 0;
- s.weighty=1;
- layout.setConstraints(j9, s);
- }
- JButton j1;
- JButton j2;
- JButton j3;
- JPanel j4;
- JComboBox j5;
- JTextField j6;
- JButton j7;
- JList j8;
- JTextArea j9;
- }
GridBagLayout()的使用方法的更多相关文章
- Java 的布局管理器GridBagLayout的使用方法(转)
GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的, GridBagLayout 类是一个灵活的布局管理器,它不要求 ...
- Java 的布局管理器GridBagLayout的使用方法【图文说明】
https://www.cnblogs.com/taoweiji/archive/2012/12/14/2818787.html GridBagLayout是java里面最重要的布局管理器之一,可以做 ...
- 关于GridBagLayout的讲解哦
13-08-29 17:01:10| 分类: Java | 标签:gridbaglayout gridbagconstraints 添加方法 |字号 订阅 GridBagLayout ...
- Java Swing布局管理器GridBagLayout的使用示例 [转]
GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的, GridBagLayout 类是一个灵活的布局管理器,它不要求 ...
- 【java】浅析java组件中的布局管理器
这篇博文笔者介绍一下java组件中,常用的布局管理器.java组件中的布局方式有好几十种,所有的这些布局管理器都实现了java.awt.LayoutManager接口.接下来笔者介绍一下常用的5种布局 ...
- JavaSE-25 AWT
学习要点 关于AWT AWT容器 布局管理器 AWT组件 事件处理 关于AWT java.awt包与子包 AWT软件包 说明 import java.awt.*; 基本组件使用工具 import ...
- javaSE27天复习总结
JAVA学习总结 2 第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5) ...
- Java基础之创建窗口——使用GridBagLayout管理器(TryGridBagLayout)
控制台程序. java.awt.GridBagLayout管理器比前面介绍的其他布局管理器灵活得多,因此使用起来也比较复杂.基本机制就是在随意的矩形网格中布局组件,但网格的行和列不一定拥有相同的高度和 ...
- GridBagLayout:网格包布局管理器
GridBagLayout:网格包布局管理器 GridBagLayout可以说是布局管理器Layout中最复杂的一个,其中涉及到的参数也比较得多,比如说: GridBagConstraints g ...
随机推荐
- javascript笔记——jikeytang javascript前端群 389875212 精华总结
网址: https://github.com/jsfront // http://www.kancloud.cn/jsfront/month/82796 内容: 前端js github总结, ...
- jquery实现视觉滚动--fullpage
用fullpage.js实现视觉滚动效果 1.Html页面 <!DOCTYPE html> <html> <head> <meta charset=" ...
- java 读写锁
http://tutorials.jenkov.com/java-concurrency/read-write-locks.html 翻译 读写锁比LOCK的实现更复杂,想象有一个应用程序能读和写一些 ...
- nginx 配置文件
#基于ip设置 server{ listen 80; server_name 192.168.116.129; location /{ root /usr/etc/ngin/html/ip; inde ...
- 【Python笔记】异常处理
1 什么是异常 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行.一般情况下,在Python无法正常处理程序时就会发生一个异常.异常是Python对象,表示一个错误. 当Pytho ...
- unity 3d-Easy Touch 3教程 转
Easy Touch 教程 转自:http://www.unitymanual.com/thread-31332-1-1.html 1.import “Easy Touch 3”的资源包 2.创建人物 ...
- WPF中Image控件绑定到自定义类属性
首先我们定义一个Student类,有ID,Name,Photo(保存图片路径). using System; using System.Collections.Generic; using Syste ...
- 【js】IE、FF、Chrome浏览器中的JS差异介绍
如何判断浏览器类型 转:http://www.cnblogs.com/carekee/articles/1854674.html 1.通过浏览器特有的对象 如ie 的ActiveXObject ff ...
- 【go】脑补框架 Express beego tornado Flux reFlux React jsx jpg-ios出品
http://goexpresstravel.com/ 今天 Express 的作者 TJ Holowaychuk 发了一篇文章,正式宣告和 Node.js 拜拜了,转向 Go 语言. Go vers ...
- 搭建Git Server
windows上如何搭建Git Server Git在版本控制方面,相比与SVN有更多的灵活性,对于开源的项目,我们可以托管到Github上面,非常方便,但是闭源的项目就会收取昂贵的费用.那么私有 ...