- 浏览: 141429 次
- 性别:
- 来自: 南宁
文章分类
- 全部博客 (137)
- J2SE API基础 (19)
- JAVA Structure/Algorithm (1)
- 设计模式及UML(pd/rose) (11)
- SSH (32)
- JPA/EJB/JSF (0)
- Jsp/Servlet (1)
- XML (0)
- DWR/Dojo/JQuery(Ajax) (1)
- Js/css/HTML (3)
- Java报表开发 (0)
- 网络协议及认证加密算法 (2)
- Java多线程网络编程 (1)
- Lucence (0)
- Oracle Developer (5)
- Oracle DBA (3)
- mysql/SQLServer/DB2 (5)
- Weblogic配置/调试 (0)
- Tomcat/JBoss/Websphere (10)
- Linux/Unix操作部署及shell编程 (9)
- C/C++编程 (4)
- 系统分析 (0)
- 项目管理(CVS&风险控制) (0)
- JUnit单元和J2EE集成测试 (2)
- 软设/招聘 (6)
- IT English (8)
- Mathematics/Data Mining (1)
- Android开发爱好 (1)
- Flash制作爱好 (0)
- Professional wisdom (4)
- 序言 (1)
- 聊天记录 (0)
- 理想 (3)
- 承诺 (0)
- oifuslfjsldkj_chatrecord (1)
最新评论
-
blues1021:
dafeiwudi 写道什么叫外频和陪频啊?一般电脑都显示主频 ...
计算机组成原理和结构-时钟周期、机器周期、总线周期、指令周期含义和关系 -
dafeiwudi:
什么叫外频和陪频啊?一般电脑都显示主频,它不表示运算速递,我们 ...
计算机组成原理和结构-时钟周期、机器周期、总线周期、指令周期含义和关系
一、实用源程序,可以用于自己的类库中调用相应的setConstraints方法即可迅速地实现界面良好布局
:
package ioutil;
import javax.swing.*;
import java.awt.*;
public class EasyGridLayout extends GridBagLayout{
public void setConstraints(JLabel c, int row, int col,
int width, int height){
finishSet(c, row, col, width, height,
0, 0,
GridBagConstraints.NONE,
GridBagConstraints.NORTHWEST);
}
public void setConstraints (JButton c, int row, int col,
int width, int height){
finishSet (c, row, col, width, height,
0,0,
GridBagConstraints.NONE,
GridBagConstraints.CENTER);
}
public void setConstraints (JTextField c, int row, int col,
int width, int height){
finishSet (c, row, col, width, height,
100, 0,
GridBagConstraints.HORIZONTAL,
GridBagConstraints.NORTHWEST);
}
public void setConstraints (JScrollPane c, int row, int col,
int width, int height){
finishSet (c, row, col, width, height,
100, 100,
GridBagConstraints.BOTH,
GridBagConstraints.NORTHWEST);
}
public void setConstraints (JTextArea c, int row, int col,
int width, int height){
finishSet (c, row, col, width, height,
100, 100,
GridBagConstraints.BOTH,
GridBagConstraints.NORTHWEST);
}
public void setConstraints (JList c, int row, int col,
int width, int height){
finishSet (c, row, col, width, height,
100, 100,
GridBagConstraints.BOTH,
GridBagConstraints.NORTHWEST);
}
public void setConstraints (JCheckBox c, int row, int col,
int width, int height){
finishSet (c, row, col, width, height,
0, 0,
GridBagConstraints.HORIZONTAL,
GridBagConstraints.NORTHWEST);
}
public void setConstraints (JRadioButton c, int row, int col,
int width, int height){
finishSet (c, row, col, width, height,
0, 0,
GridBagConstraints.HORIZONTAL,
GridBagConstraints.NORTHWEST);
}
public void setConstraints (JPanel c, int row, int col,
int width, int height){
finishSet (c, row, col, width, height,
100, 100,
GridBagConstraints.BOTH,
GridBagConstraints.NORTHWEST);
}
private void finishSet (Component c, int y, int x, int w, int h,//
gridx,gridwidth4个单位都是网格
int weightx, int weighty, //
分配额外空间比例给行列
,以上三种都是如何将网格分配给组件。
int fill, int anchor){//
组件大于或小于网格时伸缩或放置位置。
在特定网格区域内设置伸缩,放置,内边距。
GridBagConstraints gbc = new GridBagConstraints();
gbc.insets.bottom = 5; /
/组件与放置它的grix、gridy之间的偏移,单位为px.
gbc.insets.left = 5;
gbc.insets.right = 5;
gbc.insets.top = 5;
gbc.insets.left = 5;
gbc.insets.right = 5;
gbc.insets.top = 5;
gbc.weightx = weightx;
gbc.weighty = weighty;
gbc.fill = fill;
gbc.anchor = anchor;
gbc.gridx = x-1;
gbc.gridy = y-1;
gbc.gridwidth = w;
gbc.gridheight = h;
setConstraints(c, gbc);//
}
}
二、
测试类代码,
为了了解上述的源程序所写:
package ioutil;
import javax.swing.*;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
public class GridBagLayoutInstance extends JPanel{
public GridBagLayoutInstance() {
this.setLayout(new GridBagLayout());
this.setOpaque(true);//the component should be opaque透明的。
GridBagConstraints c = new GridBagConstraints();
JButton b = new JButton ("Button One");
c.gridx = 0 ;//控件左上角坐标
c.gridy = 0;
c.gridwidth = 2;//所占cell个数
c.gridheight = 1;
this.add(b,c);//button 1 added
c.gridy++;
b= new JButton("Button Two");
this.add(b,c);
c.gridx = 2;
c.gridy = 0;
c.gridwidth = 1;
c.gridheight = 2;
b = new JButton("Button Three");
this.add(b,c);
c.gridx = 3;
c.gridy = 0;
c.gridwidth = 1;
c.gridheight = 2;
//c.insets.top=10;
//c.insets.left=10;
//c.fill=GridBagConstraints.HORIZONTAL;
//c.anchor=GridBagConstraints.ABOVE_BASELINE;
b = new JButton("Button Fourth");
this.add(b,c);
c.gridx = 0 ;
c.gridy = 2;
c.gridwidth = 4;
c.gridheight =1 ;
this.add(new JTextField(35),c);
}
public static void main(String[] args) {
JFrame f = new JFrame("GridBagLayout Instance ");
JPanel p = new GridBagLayoutInstance();
f.getContentPane().add(p);
f.pack();
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//f.setSize(300,400);
f.setVisible(true);
} }
三、拓展学习GridBagConstraints类及测试类结果:
因为GridBagLayout提供的强大的功能,可以将组件布局在大小、个数不同的网格中,所以要借助一个聚合类GridBagConstriants类,下面关于GridBagConstriants类众多常量设置的解析:
测试原来界面:
first:如何将网格分配给组件
:
1.gridx字段:组件的左上角坐标单位为单元格,初始为(0,0)坐标
gbc.gridx=0;
gbc.gridy=0;
gbc.gridx = x-1;
gbc.gridy = y-1;
2.gridwidth gridheight字段:组件在长宽覆盖的单元格的个数
gbc.gridwidth = 2;
gbc.gridheight = 1;
3.weightx weighty,指定如何分布额外的水平、垂直空间给行列用于显示大组件
,全部将额外行列空间分配为100,0时为不分配给行列,将额外的分配给行列之间或者在边距出。默认为0.
gbc.weightx = weightx
gbc.weighty = weighty;
将两个同时设置为0,100,30时对比:
sencond:在特定网格区域内设置伸缩,放置,内边距:
4.insets.left字段:组件与放置它的grix、gridy之间的偏移,单位为px但不用写出
.
gbc.insets.left=10;
gbc.insets.right=10;
jbutton.insets.top
jbutton.insets.bottom
都设置为10时显示:
5.fill字段:指定组件如何伸缩填充包含它的网格区域。一般是指组件大于它的网格时。
gbc.fill=GridBagConstraints.NONE HORIZONTAL VERTICAL BOTH,也可以是用户传递进去的数值。
BOTH设置情形:
HORIZONTAL设置情形:
6.anchor字段:它可以确定在显示区域中放置组件的位置,
当组件小于它的网格时。默认为absolute的CENTER.
(1)absolute 绝对值
gbc.anchor=Constraints.CENTER;
gbc.anchor=Constraints.NORTHWEST;
gbc.anchor=Constraints.NORTH;
EAST、SOUTHEAST、SOUTH、SOUTHWEST、WEST 和 NORTHWEST
NORTHWEST设置:
(2)orientation relative基于方向的值
gbc.anchor=Constraints.PAGE_START;
gbc.anchor=Constraints.LINE_START;
gbc.anchor=Constraints.LINE_END;
PAGE_START, PAGE_END, LINE_START, LINE_END, FIRST_LINE_START, FIRST_LINE_END, LAST_LINE_START and LAST_LINE_END.
PAGE_START设置:
LINE_START设置:
(3)baseline relvative 相对于基线的值
gbc.anchor=Constraints.BASELINE;
gbc.anchor=Constraints.ABOVE_BASELINE;
gbc.anchor=Constraints.BELOW_BASELINE_LEADING;
BASELINE设置:
ABOVE_BASELINE设置:
发表评论
-
java字符串按字符逆转和按单词逆转
2011-11-26 16:21 1581字符串的处理,经常在各类考试中用到,在网上搜索了下这方面的资料 ... -
JScrollPane和JTextArea,JMenuBar、JMenu和JMenuItem之间的组合关系
2011-08-09 18:19 1080package menuta; import java.aw ... -
利用EasyGridLayout API的帮助文档
2011-08-09 18:17 696一、对上一篇文章给出的EasyGridLayout源程序,加载 ... -
Java2 五种界面布局类和实际中的使用
2011-08-09 18:14 1132(JPanel)Panel是一个轻量级的容器,由于不是顶层的容 ... -
Java2中的框架类和容器类、容器类与布局类的聚合关系
2011-08-09 18:12 913一: 布局中的JFrame与JPanel、Container ... -
Java2事件处理模型的解析和注意
2011-08-09 18:11 771/*<pre>伪源代码*/ DemoFlowLa ... -
Java2 I/O类使用总结(图解)
2011-08-09 17:58 618一、对象的读写(序列化):ObjectIO.jpg ... -
规范注释的说明形式和位置、@param参数、<pre>源代码示例
2011-08-09 17:52 1268/** * Returns a string that ... -
javaI/O中FileOut/InputStream借助ObjectOut/IntputStream写入和读取序列化之嵌套原理
2011-08-09 17:51 1079一、FileOutputStream和ObjectOutpu ... -
用==和equals测试java对象的引用、浅拷贝、深拷贝和初始化区别
2011-08-09 17:44 1132测试主要部分代码:public class Employee ... -
从低到高强制转换取模截断位数导出的java基本类型复习
2011-08-09 17:39 1035一、强制类型转换中的低到高强制转换取模截断位数本质 ... -
java项目结构组织及类、成员的访问限定符
2011-04-08 20:05 1075main:一个项目中可有多个main方法但是,要选 ... -
类内、类外静态非静态方法的调用
2011-04-08 20:11 1097一:类内部 1.调用静态性相同的直接用。 2 ... -
hashcode方法
2011-04-08 20:17 618hashcode()是干什么用的? 首先hashcode是哈 ... -
JAVA中的接口与抽象类的区别记忆
2011-04-08 20:31 703接口与抽象类:抓住 ... -
各内部类的作用、定义、成员限制、访问总结
2011-04-09 00:56 834内部类的作用总括: 1.内部类可以独立的继承一个类和 ... -
java.util.StringTokenizer
2011-04-09 18:40 563一:单词: tokenization 标志化(token ... -
java dos下运行(有包)
2011-04-15 01:25 10101.使用notepad打开记事本编写类注意写正确。 publ ...
相关推荐
`GridBagConstraints`是Java Swing中的一个类,用于在`GridBagLayout`布局管理器中控制组件的位置和大小。本篇文章将深入探讨`GridBagConstraints`的终极技巧,帮助开发者更好地理解和运用这一强大的布局工具。 `...
在Java Swing中,`GridBagLayout`是一种非常灵活的布局管理器,允许开发者精确控制组件在容器中的位置和大小。由于其灵活性,`GridBagLayout`成为创建复杂、自定义布局的理想选择,但它的确比其他布局管理器更复杂。...
1. **GridBagConstraints对象**:这是一个用来存储组件约束的类,包含了影响组件布局的各种属性,如weightx、weighty、fill、anchor等。它是GridBagLayout布局的关键,因为它定义了组件如何占据网格空间。 2. **...
GridBagConstraints是GridBagLayout的约束类,封装了若干对组件的约束属性。每个由GridBagLayout管理的组件都关联一个该约束实例,以指定组件所在显示区域的具体放置位置,以及组件在其显示区域中的对齐方式。 ...
GridBagLayout的使用涉及到`GridBagConstraints`类,这个类有很多字段,如`gridx`、`gridy`定义组件的位置,`gridwidth`和`gridheight`决定组件跨越的单元格数量,`weightx`和`weighty`用于确定组件在拉伸时的权重,...
Java 网格包 GridBagLayout 布局管理器提供了一个灵活和复杂的布局管理方式,通过设置 weightx 和 weighty 参数来划分网格单元,然后使用 GridBagConstraints 类型的约束对象来设置组件的位置和大小。
GridBagLayout 布局详解 GridBagLayout 是 Java Swing 编程中的一种强大且灵活的布局管理器,它...通过设置 GridBagConstraints 对象的参数,可以控制组件在显示区域中的位置、大小和填充方式,从而实现复杂的布局。
Java中的GridBagLayout布局管理器是Java Swing中最复杂但也是最灵活的布局管理工具,它允许组件在容器中以不同的大小存在,甚至可以跨多个网格并部分重叠。这种布局管理器将容器划分为一系列网格单元,每个组件可以...
Java中的GridBagLayout布局管理器是Java Swing中最复杂但也是最灵活的布局管理工具,它允许容器中的组件具有不同的大小,可以跨越多个网格,并且组件之间可以部分重叠。理解GridBagLayout的关键在于掌握它的网格单元...
### Java中GridBagLayout布局管理器的详细讲解 #### 一、引言 在Java图形用户界面(GUI)设计中,界面布局是...希望本文能够帮助读者更好地理解和运用`GridBagLayout`布局管理器及其相关的`GridBagConstraints`类。
GridBagLayout的核心在于GridBagConstraints类,它是用于控制组件如何放置在GridBagLayout中的关键。GridBagConstraints类包含多个属性,每个属性都有特定的功能。 1. **gridx 和 gridy**:这两个属性分别表示组件...
- **建立GridBagConstraints对象**:`GridBagConstraints`是`GridBagLayout`的辅助类,用于存储组件的布局属性。 - **设定容器和布局管理方式**:使用`setLayout(GridBagLayout)`方法将容器的布局设为`...
3. **布局管理**:使用`setLayout`函数将GridBagLayout添加到GUI容器中,然后使用`add`函数将组件和对应的GridBagConstraints对象添加到布局中。 4. **动态调整**:GridBagLayout的一个优势在于它可以很好地处理...
AWT(Abstract Window Toolkit)组件提供了六种布局管理器,分别是BorderLayout、FlowLayout、GridLayout、GridBagLayout、CardLayout和BoxLayout。这些布局管理器可以帮助开发者更好地管理组件在窗口中的排列。 1....
在Java Swing中,`GridBagLayout`是一种灵活的布局管理器,它允许开发者精确地控制组件在容器中的位置和大小。而`JTable`是Swing提供的一种用于展示表格数据的组件,通常用于数据的显示、编辑和排序。这篇博客文章...
本文通过代码示例的方式介绍了Swing的GridBagLayout布局样式的应用,不拘泥于JDK文档教条方式的陈述,图形效果图与文字相结合,讲解直观而浅显易懂,另外,示例代码中还包含了BorderLayout、FlowLayout等布局的应用...
这是为初初学者提供练习的代码,具有很强的指导效果哈~~~
JLayoutPane是用来控制组件布局的容器,例如FlowLayout、BorderLayout、GridLayout和GridBagLayout等。JRootPane是每个JFrame或JWindow的基础,它包含了一个默认的JLayeredPane,负责处理窗口的基本功能。 基本控件...
它允许开发者精确地控制组件的位置和大小,以适应各种复杂的布局需求。 在`GridBagLayout`中,有几个核心参数对于理解和使用该布局管理器至关重要: 1. **gridx** 和 **gridy**: 这两个参数定义了组件在网格中的...