layout在java什么意思(java layout种类和用途要详细)

本文目录
- java layout种类和用途要详细
- JAVA中“p.setLayout(new GridLayout(1, 2));”是什么意思
- java中setMinWindowLayout()是什么呀
- java开发安卓里id=“@+id/layout”这句话是什么意思
java layout种类和用途要详细
建议复杂布局使用GridBagLayout,虽然操作比较复杂,但是稍微研究下,可以给你的GUI设计出别样风格
GridBagLayout的使用:是java中最有弹性但也是最复杂的一种版面管理器。它只有一种构造函数,但必须配合
GridBagConstraints才能达到设置的效果。
GridBagLayout的类层次结构图:
java.lang.Object
--java.awt.GridBagLayout
构造函数:
GirdBagLayout()建立一个新的GridBagLayout管理器。
GridBagConstraints()建立一个新的GridBagConstraints对象。
GridBagConstraints(int gridx,int gridy,int gridwidth,int gridheight,double weightx,double weighty,
int anchor,int fill, Insets insets,int ipadx,int ipady)建立一个新的GridBagConstraints对象
,并指定其参数的值。
参数说明:
gridx,gridy:设置组件的位置,gridx设置为GridBagConstraints.RELATIVE代表此组件位于之前所加入组件的右边。
若将gridy设置为GridBagConstraints.RELATIVE代表此组件位于以前所加入组件的下面。建议定义出
gridx,gridy的位置,以便以后维护程序。表示放在几行几列,gridx=0,gridy=0时放在0行0列。
gridwidth,gridheight:用来设置组件所占的单位长度与高度,默认值皆为1。你可以使用GridBagConstraints.REMAINDER常
量,代表此组件为此行或此列的最后一个组件,而且会占据所有剩余的空间。
weightx,weighty:用来设置窗口变大时,各组件跟着变大的比例,当数字越大,表示组件能得到更多的空间,默认值皆为0。
anchor: 当组件空间大于组件本身时,要将组件置于何处,有CENTER(默认值)、NORTH、NORTHEAST、EAST、SOUTHEAST、
WEST、NORTHWEST可供选择。
insets:设置组件之间彼此的间距,它有四个参数,分别是上,左,下,右,默认为(0,0,0,0).
ipadx,ipady:设置组件内的间距,默认值为0。
我们以前提过,GridBagLayout里的各种设置都必须通过GridBagConstraints,因此当我们将GridBagConstraints的参数都设置
好了之后,必须new一个GridBagConstraints的对象出来,以便GridBagLayout使用。
例子:
GridBagLayoutDemo.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GridBagLayoutDemo{
public GridBagLayoutDemo(){
JButton b;
GridBagConstraints c;
int gridx,gridy,gridwidth,gridheight,anchor,fill,ipadx,ipady;
double weightx,weighty;
Insets inset;
JFrame f=new JFrame();
GridBagLayout gridbag=new GridBagLayout();
Container contentPane=f.getContentPane();
contentPane.setLayout(gridbag);
b=new JButton("first");
gridx=0;
gridy=0;
gridwidth=1;
gridheight=1;
weightx=10;
weighty=1;
anchor=GridBagConstraints.CENTER;
fill=GridBagConstraints.HORIZONTAL;
inset=new Insets(0,0,0,0);
ipadx=0;
ipady=0;
c=new GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,
fill,inset,ipadx,ipady);
gridbag.setConstraints(b,c);
contentPane.add(b);
b=new JButton("second");
gridx=1;
gridy=0;
gridwidth=2;
gridheight=1;
weightx=1;
weighty=1;
anchor=GridBagConstraints.CENTER;
fill=GridBagConstraints.HORIZONTAL;
inset=new Insets(0,0,0,0);
ipadx=50;
ipady=0;
c=new GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,
fill,inset,ipadx,ipady);
gridbag.setConstraints(b,c);
contentPane.add(b);
b=new JButton("third");
gridx=0;
gridy=1;
gridwidth=1;
gridheight=1;
weightx=1;
weighty=1;
anchor=GridBagConstraints.CENTER;
fill=GridBagConstraints.HORIZONTAL;
inset=new Insets(0,0,0,0);
ipadx=0;
ipady=50;
c=new GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,
fill,inset,ipadx,ipady);
gridbag.setConstraints(b,c);
contentPane.add(b);
b=new JButton("fourth");
gridx=1;
gridy=1;
gridwidth=1;
gridheight=1;
weightx=1;
weighty=1;
anchor=GridBagConstraints.CENTER;
fill=GridBagConstraints.HORIZONTAL;
inset=new Insets(0,0,0,0);
ipadx=0;
ipady=0;
c=new GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,
fill,inset,ipadx,ipady);
gridbag.setConstraints(b,c);
contentPane.add(b);
b=new JButton("This is the last button");
gridx=2;
gridy=1;
gridwidth=1;
gridheight=2;
weightx=1;
weighty=1;
anchor=GridBagConstraints.CENTER;
fill=GridBagConstraints.HORIZONTAL;
inset=new Insets(0,0,0,0);
ipadx=0;
ipady=50;
c=new GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,
fill,inset,ipadx,ipady);
gridbag.setConstraints(b,c);
contentPane.add(b);
f.setTitle("GridBagLayout");
f.pack();
f.setVisible(true);
f.addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);
}
public static void main(String args){
new GridBagLayoutDemo();
}
}
JAVA中“p.setLayout(new GridLayout(1, 2));”是什么意思
p.setLayout(参数)此方法表示设置窗口布局,其中的“参数”是窗口布局的样式,new GridLayout(1, 2)为网格布局样式。其中的参数“1”“2”分别为网格的“行数”和“列数”。
p.setLayout(new GridLayout(1, 2));此句话的整体意思是将窗口布局设置为网格式布局,网格的行数和列数分别是1和2.
java中setMinWindowLayout()是什么呀
分析代码 ,
可以看出SInfo 是JFrame的子类.
setMinWindowLayout() 方法,就可能就是该类自定义的方法,因为JFrame并没有该方法.
根据该方法名推测, 这个方法应该就是设置界面布局的方法,主要用于调整组件(按钮,输入框...等)的位置.
setMinWindowLayout 可能是拼写错误 , 应该setMainWindowLayout ,表示设置主界面的布局
根据截图的代码片段可以看出,这个代码还是存在一些问题的,比如我们习惯上是调整界面布局,然后在调用setVisiable(true);
下面是一个窗口的参考代码 ,基于Java8
效果图
import javax.swing.*;
public class SInfo extends JFrame{
//定义组件
private JPanel jp;
private JLabel jl;
private JTextField jtf;
private JButton btn;
public void setMainWindowLayout() {
//初始化组件
jp = new JPanel();
jl = new JLabel("请输入大名:");
jtf = new JTextField(8);
btn = new JButton("Say Hello");
this.setTitle("窗口");
// 组件的布局设置
jp.add(jl);
jp.add(jtf);
jp.add(btn);
//点击按钮,弹出显示的文字
btn.addActionListener(e-》
JOptionPane.showMessageDialog(this, "Hello "+jtf.getText())
);
//把组件添加到窗口
this.add(jp);
}
public static void main(String args) {
SInfo sInfo = new SInfo();
sInfo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
sInfo.setMainWindowLayout();
sInfo.setSize(300,80);//设置窗口大小
sInfo.setLocationRelativeTo(null);//设置窗口居中显示
sInfo.setVisible(true);
}
}
java开发安卓里id=“@+id/layout”这句话是什么意思
给控件加入id后可以在程序代码里用findViewById(R.id.layout);找到这个view。之后就可以在代码里作为对像作用了,layout是自定义命名

更多文章:
accelerate常用短语(by oneself是什么意思)
2026年7月6日 22:00
windowsinstaller安装(在图标上单击右键为何出现WINDOWS INSTALLER正在准备安装,怎么办)
2026年7月11日 07:00
指针数组与数组指针的用法(你好 请问你了解数组与指针运用吗 还有数组之中还能嵌套数组吗 如: int a[11]={b[2]、、、、})
2026年3月17日 22:30
祁东县新闻网站(2015湖南祁东县事业单位引进紧缺型人才公告)
2026年2月3日 03:45
幻灯片js不可用怎么解决(js幻灯片 没有反映 哪里出错了)
2026年4月15日 00:15
html代码查看器(怎样使用浏览器查看网页HTML和CSS源代码)
2025年9月7日 17:30
oracle 10g客户端安装(oracle10g能不能安装到windows2012上面)
2025年7月18日 11:45
















