gridbaglayout(gridbaglayout布局管理器的用法)

http://www.itjxue.com  2023-02-20 10:47  来源:未知  点击次数: 

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中表格中的单元格的合并

(责任编辑:IT教学网)

更多

推荐淘宝营销文章