gridlayout?GridLayout的几种常用设置
大家好,今天给各位分享gridlayout的一些知识,其中也会对GridLayout的几种常用设置进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
java GridBagLayout与GridLayout的区别
GridLayout类是一个布局处理器,它以矩形网格形式对容器的组件进行布置。容器被分成大小相等的矩形,一个矩形中放置一个组件,比较死板
GridBagLayout类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直、水平或沿它们的基线对齐。每
个 GridBagLayout对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为显示区域。单元格可大可小,可以占
用两个单元格的宽度或者两个单元格的高度,类似html中表格中的单元格的合并
GridLayout中如何设置一个按钮占两个位置,就像我截图的那样
思路:对窗体应用边界布局,在NORTH上放置一个文本框,在CENTER上放置一个面板,面板上放置计算器的相应按钮
//GridFrame.Java
import java.awt.*;
import javax.swing.*;
class GridFrame extends JFrame{
//定义面板,并设置为网格布局,4行4列,组件水平、垂直间距均为3
JPanel p=new JPanel(new GridLayout(4,4,3,3));
JTextArea t=new JTextArea();//定义文本框
//定义字符串数组,为按钮的显示文本赋值
//注意字符元素的顺序与循环添加按钮保持一致
String str[]={"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};
public GridFrame(String s){
super(s);//为窗体名称赋值
setLayout(new BorderLayout());//定义窗体布局为边界布局
JButton btn[];//声明按钮数组
btn=new JButton[str.length];//创建按钮数组
//循环定义按钮,并添加到面板中
for(int i=0;i<str.length;i++){
btn[i]=new JButton(str[i]);
p.add(btn[i]);
}
//将文本框放置在窗体NORTH位置
getContentPane().add(t,BorderLayout.NORTH);
//将面板放置在窗体CENTER位置
getContentPane().add(p,BorderLayout.CENTER);
setVisible(true);
setSize(250,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);//让窗体居中显示
}
public static void main(String[] args){
GridFrame gl=new GridFrame("网格布局计算机!");
}
}
程序执行结果如下图:
GridLayout和GridView的区别
GridLayout和GridView的区别:
GridView是一种适配器布局,它的继承关系是ViewGroup-->AdapterView-->AbsListView-->GridView,他是从一个adapter中取出内容填充到GridView中的每一个子View。
GridLayout是一个布局,它大大简化了对复杂布局的处理,提高了性能。他直接继承自ViewGroup,和LinearLayout这种是类似的。
我感觉GridView和GridLayout就和ListView和LinearLayout的区别类似。
那么什么时候用GridView什么时候用GridLayout呢?
类似九宫格这种可以采用GridView。但是像Android系统自带的计算器的界面就不可能通过GridView实现,因为有些按键不一样大,如果使用GridLayout实现那就很简单了。另外GridLayout比RelativeLayout更好用。
GridLayout的几种常用设置
1.GridLayout设置:
GridLayout layout= new GridLayout();
//设置容器的列数
layout.numColumns= 4;
//设置容器上的组件是否等距分开
layout.makeColumnsEqualWidth= false;等价写法:GridLayout layout= new GridLayout(4, false);
2.GridData.grabExcessHorizontalSpace、GridData.grabExcessVerticalSpace
①GridData.grabExcessHorizontalSpace
GridData gridData= new GridData();
//当容器大小变化时,组件所在列空间横向随容器的变化而变化
gridData.grabExcessHorizontalSpace= true;等价写法:GridData gridData= new GridData(GridData.GRAB_HORIZONTAL);
②GridData.grabExcessVerticalSpace
GridData gridData= new GridData();
//当容器大小变化时,组件所在行空间纵向随容器的变化而变化
gridData.grabExcessVerticalSpace= true;等价写法:GridData gridData= new GridData(GridData.GRAB_VERTICAL);
3.GridData.FILL_HORIZONTAL、GridData.FILL_VERTICAL、GridData.FILL_BOTH
① GridData.FILL_HORIZONTAL:
GridData gridData= new GridData();
//横向对齐方式
gridData.horizontalAlignment= GridData.FILL;
gridData.grabExcessHorizontalSpace= true;等价写法:GridData gridData= new GridData(GridData.FILL_HORIZONTAL);
②GridData.FILL_VERTICAL
GridData gridData= new GridData();
//纵向对齐方式
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!