
java swing 中的Gridbaglayout
初学javaswing,在看到gridbaglayout时,有个例子无法理解。我不能理解的是,gridbaglayout都没有设置整个容器几行几列,那么在调用add方法是...
初学java swing, 在看到gridbaglayout时,有个例子无法理解。
我不能理解的是,gridbaglayout 都没有设置整个容器几行几列,那么在调用add方法是,头两个参数,如0,0 或 2,3有什么意义啊?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class test7 extends JPanel//此处类继承了JPanel类
{
static final int WIDTH=300;
static final int HEIGHT=150;
JFrame loginframe;
public void add(Component c,GridBagConstraints constraints,int x,int y,int w,int h)
{//此方法用来添加控件到容器中
constraints.gridx=x;
constraints.gridy=y;
constraints.gridwidth=w;
constraints.gridheight=h;
add(c,constraints);
}
test7()
{
loginframe=new JFrame("信息管理系统"); //设置顶层容器
loginframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置其顶层容器的关闭性
GridBagLayout lay=new GridBagLayout();//创建网格组布局方式对象
setLayout(lay);
loginframe.add(this, BorderLayout.WEST);
loginframe.setSize(WIDTH,HEIGHT);
Toolkit kit=Toolkit.getDefaultToolkit();//设置顶层容器框架为居中
Dimension screenSize=kit.getScreenSize();
int width=screenSize.width;
int height=screenSize.height;
int x=(width-WIDTH)/2;
int y=(height-HEIGHT)/2;
loginframe.setLocation(x,y);
JButton ok=new JButton("确认");
JButton cancel=new JButton("放弃");
JLabel title=new JLabel("布局管理器测试窗口");
JLabel name=new JLabel("用户名");
JLabel password=new JLabel("密 码");
final JTextField nameinput=new JTextField(15);
final JTextField passwordinput=new JTextField(15);
GridBagConstraints constraints=new GridBagConstraints();
constraints.fill=GridBagConstraints.NONE;
constraints.anchor=GridBagConstraints.EAST;
constraints.weightx=3;
constraints.weighty=4;
add(title,constraints,0,0,4,1); //使用网格组布局添加控件
add(name,constraints,0,1,1,1);
add(password,constraints,0,2,1,1);
add(nameinput,constraints,2,1,1,1);
add(passwordinput,constraints,2,2,1,1);
add(ok,constraints,0,3,1,1);
add(cancel,constraints,2,3,1,1);
loginframe.setResizable(false);
loginframe.setVisible(true);
}
}
public class test7
{
public static void main(String[] args)
{
login log=new login();
}
} 展开
我不能理解的是,gridbaglayout 都没有设置整个容器几行几列,那么在调用add方法是,头两个参数,如0,0 或 2,3有什么意义啊?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class test7 extends JPanel//此处类继承了JPanel类
{
static final int WIDTH=300;
static final int HEIGHT=150;
JFrame loginframe;
public void add(Component c,GridBagConstraints constraints,int x,int y,int w,int h)
{//此方法用来添加控件到容器中
constraints.gridx=x;
constraints.gridy=y;
constraints.gridwidth=w;
constraints.gridheight=h;
add(c,constraints);
}
test7()
{
loginframe=new JFrame("信息管理系统"); //设置顶层容器
loginframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置其顶层容器的关闭性
GridBagLayout lay=new GridBagLayout();//创建网格组布局方式对象
setLayout(lay);
loginframe.add(this, BorderLayout.WEST);
loginframe.setSize(WIDTH,HEIGHT);
Toolkit kit=Toolkit.getDefaultToolkit();//设置顶层容器框架为居中
Dimension screenSize=kit.getScreenSize();
int width=screenSize.width;
int height=screenSize.height;
int x=(width-WIDTH)/2;
int y=(height-HEIGHT)/2;
loginframe.setLocation(x,y);
JButton ok=new JButton("确认");
JButton cancel=new JButton("放弃");
JLabel title=new JLabel("布局管理器测试窗口");
JLabel name=new JLabel("用户名");
JLabel password=new JLabel("密 码");
final JTextField nameinput=new JTextField(15);
final JTextField passwordinput=new JTextField(15);
GridBagConstraints constraints=new GridBagConstraints();
constraints.fill=GridBagConstraints.NONE;
constraints.anchor=GridBagConstraints.EAST;
constraints.weightx=3;
constraints.weighty=4;
add(title,constraints,0,0,4,1); //使用网格组布局添加控件
add(name,constraints,0,1,1,1);
add(password,constraints,0,2,1,1);
add(nameinput,constraints,2,1,1,1);
add(passwordinput,constraints,2,2,1,1);
add(ok,constraints,0,3,1,1);
add(cancel,constraints,2,3,1,1);
loginframe.setResizable(false);
loginframe.setVisible(true);
}
}
public class test7
{
public static void main(String[] args)
{
login log=new login();
}
} 展开
2个回答
展开全部
public void add(Component c,GridBagConstraints constraints,int x,int y,int w,int h)
{//此方法用来添加控件到容器中
constraints.gridx=x;//设置横坐标
constraints.gridy=y;//设置纵坐标
constraints.gridwidth=w;//设置横占几个单元格
constraints.gridheight=h;//设置纵占几个单元格
add(c,constraints);
}
int x, int y你看一下上面的注释就明白了
0,0代表第1行第1列
2,3代表第3行第4列
具体你可以查下API,如果觉得还有什么疑问的话,可以百度HI我!
{//此方法用来添加控件到容器中
constraints.gridx=x;//设置横坐标
constraints.gridy=y;//设置纵坐标
constraints.gridwidth=w;//设置横占几个单元格
constraints.gridheight=h;//设置纵占几个单元格
add(c,constraints);
}
int x, int y你看一下上面的注释就明白了
0,0代表第1行第1列
2,3代表第3行第4列
具体你可以查下API,如果觉得还有什么疑问的话,可以百度HI我!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?

2022-08-05 广告
苏州蓝晓生物科技有限公司。标准化核心产品:公司拥有完整的琼脂糖介质、葡聚糖介质、聚甲基丙烯酸酯介质生产线,年产分离介质50000L,产品质量稳定并达到国际领先水平。核心优势:公司核心技术人员拥有近二十年不同基质的基球开发和官能化的丰富技术经...
点击进入详情页
本回答由苏州蓝晓生物科技有限公司_提供
展开全部
Note that you don't give a fixed initial number of rows and columns. Instead, the layout determines the table parameters according to what will satisfy all of the the GridBagConstraints settings for the gridx, gridy values for all of the components.
http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter07/layoutManagers.html
http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter07/layoutManagers.html
参考资料: http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter07/layoutManagers.html
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询