gridbaglayout(gridbaglayout布局管理器的用法)
java中的GridBagLayout是怎么调组件间距的...
java中的GridBagLayout调组件间距使用百分比来调,实例如下:
package?JavaGUI;
import?java.awt.EventQueue;
import?java.awt.GridBagConstraints;
import?java.awt.GridBagLayout;
import?java.awt.Insets;
import?javax.swing.JButton;
import?javax.swing.JFrame;
import?javax.swing.JPanel;
import?javax.swing.border.EmptyBorder;
import?javax.swing.UIManager;
public?class?GridBagLayoutDemo?extends?JFrame?{
????
????/**
?????*?
?????*/
????private?static?final?long?serialVersionUID?=?-4481121176026056530L;
????private?JPanel?contentPane;
????
????/**
?????*?Launch?the?application.
?????*/
????public?static?void?main(String[]?args)?{
????????try?{
????????????UIManager
????????????????????.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
????????}?catch?(Throwable?e)?{
????????????e.printStackTrace();
????????}
????????EventQueue.invokeLater(new?Runnable()?{
????????????public?void?run()?{
????????????????try?{
????????????????????GridBagLayoutDemo?frame?=?new?GridBagLayoutDemo();
????????????????????frame.setVisible(true);
????????????????}?catch?(Exception?e)?{
????????????????????e.printStackTrace();
????????????????}
????????????}
????????});
????}
????
????/**
?????*?Create?the?frame.
?????*/
????public?GridBagLayoutDemo()?{
????????setTitle("网格组布局");//?设置窗体的标题
????????setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//?设置窗体退出时操作
????????setBounds(100,?100,?450,?200);//?设置窗体位置和大小
????????contentPane?=?new?JPanel();//?创建内容面板
????????contentPane.setBorder(new?EmptyBorder(5,?5,?5,?5));//?设置面板的边框
????????setContentPane(contentPane);//?应用内容面板
????????GridBagLayout?gbl_contentPane?=?new?GridBagLayout();//?创建网格组布局
????????contentPane.setLayout(gbl_contentPane);//?使用网格组布局
????????
????????JButton?button1?=?new?JButton("A");//?创建按钮
????????GridBagConstraints?gbc_button1?=?new?GridBagConstraints();//?创建网格组布局约束条件
????????gbc_button1.insets?=?new?Insets(0,?0,?5,?5);//?设置控件的空白
????????gbc_button1.fill?=?GridBagConstraints.HORIZONTAL;//?设置填充方式
????????gbc_button1.weightx?=?10.0;//?第一列的分布方式为10%
????????gbc_button1.gridx?=?0;//?起始点为第1列
????????gbc_button1.gridy?=?0;//?起始点为第1行
????????contentPane.add(button1,?gbc_button1);//?增加按钮及其约束条件
????????
????????JButton?button2?=?new?JButton("B");//?创建按钮
????????GridBagConstraints?gbc_button2?=?new?GridBagConstraints();//?创建网格组布局约束条件
????????gbc_button2.insets?=?new?Insets(0,?5,?5,?5);//?设置控件的空白
????????gbc_button2.fill?=?GridBagConstraints.HORIZONTAL;//?设置填充方式
????????gbc_button2.weightx?=?20.0;//?第一列的分布方式为20%
????????gbc_button2.gridx?=?1;//?起始点为第2列
????????gbc_button2.gridy?=?0;//?起始点为第1行
????????contentPane.add(button2,?gbc_button2);//?增加按钮及其约束条件
????????
????????JButton?button3?=?new?JButton("C");//?创建按钮
????????GridBagConstraints?gbc_button3?=?new?GridBagConstraints();//?创建网格组布局约束条件
????????gbc_button3.gridheight?=?2;//?占用2列
????????gbc_button3.fill?=?GridBagConstraints.BOTH;//?设置填充方式
????????gbc_button3.weightx?=?30.0;//?第一列的分布方式为30%
????????gbc_button3.insets?=?new?Insets(0,?0,?5,?5);//?设置控件的空白
????????gbc_button3.gridx?=?2;//?起始点为第3列
????????gbc_button3.gridy?=?0;//?起始点为第1行
????????contentPane.add(button3,?gbc_button3);//?增加按钮及其约束条件
????????
????????JButton?button4?=?new?JButton("D");//?创建按钮
????????GridBagConstraints?gbc_button4?=?new?GridBagConstraints();//?创建网格组布局约束条件
????????gbc_button4.weightx?=?40.0;//?第一列的分布方式为40%
????????gbc_button4.fill?=?GridBagConstraints.BOTH;//?设置填充方式
????????gbc_button4.gridheight?=?4;//?占用4列
????????gbc_button4.insets?=?new?Insets(0,?5,?0,?0);//?设置控件的空白
????????gbc_button4.gridx?=?3;//?起始点为第4列
????????gbc_button4.gridy?=?0;//?起始点为第1行
????????contentPane.add(button4,?gbc_button4);//?增加按钮及其约束条件
????????
??????
????????
????}
????
}

java swing中GridBagLayout布局如何让最后一个单元格跨两行?
GridBagLayout布局中让最后一个单元格跨两行的Java程序如下:
package test;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class TestGridBagLayout {
public static void main(String[] args) {
JFrame jf = new JFrame();
GridBagLayout gbl = new GridBagLayout();
GridBagConstraints gbc = new GridBagConstraints();
jf.setLayout(gbl);
JButton jb1 = new JButton("BUTTON1");
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 10;
gbc.weighty = 10;
gbl.setConstraints(jb1, gbc);
jf.add(jb1);
JButton jb2 = new JButton("BUTTON2");
GridBagConstraints gbc1 = new GridBagConstraints();
gbc1.fill = GridBagConstraints.BOTH;
gbc1.gridx = 1;
gbc1.gridy = 0;
gbc1.gridheight = 2;
gbc1.weightx = 20;
gbc1.weighty = 20;
gbl.setConstraints(jb2, gbc1);
jf.add(jb2);
JButton jb3 = new JButton("BUTTON3");
GridBagConstraints gbc2 = new GridBagConstraints();
gbc2.fill = GridBagConstraints.BOTH;
gbc2.gridx = 0;
gbc2.gridy = 1;
gbc2.gridwidth = 1;
gbc2.weightx = 10;
gbc2.weighty = 10;
gbl.setConstraints(jb3, gbc2);
jf.add(jb3);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(500, 400);
jf.setVisible(true);
}
}
java GridBagLayout与GridLayout的区别
GridLayout 类是一个布局处理器,它以矩形网格形式对容器的组件进行布置。容器被分成大小相等的矩形,一个矩形中放置一个组件,比较死板
GridBagLayout 类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直、水平或沿它们的基线对齐。每
个 GridBagLayout 对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为显示区域。 单元格可大可小,可以占
用两个单元格的宽度或者两个单元格的高度,类似html中表格中的单元格的合并