GridBagLayout布局管理器的应用

GridBagLayout布局管理器比较复杂,参数也比较多,参数是 

newGridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,insert,ipadx,ipady); 

每个参数的含义 

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)。 

对象的fill成员控制的,它可取下列值 
GridBagConstraints.NONE 不增长 
GridBagConstraints.HORIZONTAL 只横向增长 GridBagConstraints.VERTICAL 只纵向增长 GridBagConstraints.BOTH   双向增长 
当你创建一个GridBagConstraints对象时,其fill值设置为NONE,因此在单元格增长时,单元格内部组件不会增长

ipadx,ipady 

设置组件间距,默认值为0。 

下面是一个小例子 


Java代码   收藏代码
  1. package com.dr.swt.xuechengxitong;  
  2.   
  3. import java.awt.Dimension;  
  4. import java.awt.GridBagConstraints;  
  5. import java.awt.GridBagLayout;  
  6. import java.awt.Insets;  
  7. import java.awt.Toolkit;  
  8.   
  9. import javax.swing.JButton;  
  10. import javax.swing.JFrame;  
  11. import javax.swing.JScrollPane;  
  12. import javax.swing.JTextArea;  
  13.   
  14. @SuppressWarnings("serial")  
  15. public class Teste3 extends JFrame{  
  16.     private static JTextArea jTextArea;  
  17.     private JButton jButton1;  
  18.     private JButton jButton2;  
  19.     private JButton jButton3;  
  20.       
  21.     public Teste3(){      
  22.         GridBagLayout gridbag = new GridBagLayout();     
  23.         this.setLayout(gridbag);     
  24.         JScrollPane scroll = new JScrollPane(getJtextArea(),      
  25.               JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,    
  26.               JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);     
  27.         gridbag.setConstraints(scroll, new GridBagConstraints(003,   
  28.               21.01.0,GridBagConstraints.CENTER,    
  29.           GridBagConstraints.BOTH, new Insets(100100100100),     
  30.             00));     
  31.         gridbag.setConstraints(getJButton1(), new GridBagConstraints   
  32.               (02111.00.0, GridBagConstraints.SOUTH,    
  33.               GridBagConstraints.HORIZONTAL, new Insets(30200100,     
  34.               100), 00));     
  35.         gridbag.setConstraints(getJButton2(), new GridBagConstraints  
  36.               (12111.00.0,GridBagConstraints.SOUTH,  
  37.                GridBagConstraints.HORIZONTAL, new Insets(30100100,   
  38.                100), 00));     
  39.         gridbag.setConstraints(getJButton3(), new GridBagConstraints  
  40.               (22111.00.0,GridBagConstraints.SOUTH,  
  41.                GridBagConstraints.HORIZONTAL, new Insets(30100100,    
  42.                200), 00));           
  43.         this.add(scroll);     
  44.         this.add(getJButton1());     
  45.         this.add(getJButton2());     
  46.         this.add(getJButton3());     
  47.         Dimension screenSize = Toolkit.getDefaultToolki().  
  48.                                  getScreenSize();     
  49.         int screenWidth = (int) screenSize.getWidth();     
  50.         int screenHight = (int) screenSize.getHeight();     
  51.         this.setSize(screenWidth, screenHight);     
  52.         this.setVisible(true);  
  53.     }  
  54.       
  55.     private JTextArea getJtextArea(){  
  56.         if(jTextArea == null){  
  57.             jTextArea = new JTextArea();   
  58.             jTextArea.setLineWrap(true);  
  59.         }  
  60.         return jTextArea;  
  61.     }  
  62.       
  63.     private JButton getJButton1(){  
  64.         if(jButton1 == null){  
  65.             jButton1 = new JButton("jButton1");  
  66.         }  
  67.         return jButton1;  
  68.     }  
  69.       
  70.     private JButton getJButton2(){  
  71.         if(jButton2 == null){  
  72.             jButton2 = new JButton("jButton2");  
  73.         }  
  74.         return jButton2;  
  75.     }  
  76.       
  77.     private JButton getJButton3(){  
  78.         if(jButton3 == null){  
  79.             jButton3 = new JButton("jButton3");  
  80.         }  
  81.         return jButton3;  
  82.     }  
  83.          
  84.     public static void main(String args[]){  
  85.         new Teste3();  
  86.     }  
  87. }  
  88.     

GridBagLayoutJava中最灵活和最复杂的布局管理器之一,它可以让开发者在窗口中创建复杂的布局。它提供了一个网格和一个包含网格的单元格,网格中的每个单元格都可以放置一个组件,而单元格的大小可以根据需要进行调整。 GridBagLayout布局管理器的实现非常灵活,允许您将组件放置在网格中的任何位置,并根据需要为它们分配任意数量的行和列。由于其灵活性,使用GridBagLayout可能会比其他布局管理器更具挑战性,但是一旦掌握了它,您就可以创建出非常复杂的布局。 下面是一个简单的Java应用程序,用于演示如何使用GridBagLayout布局管理器: ```java import java.awt.*; import javax.swing.*; public class GridBagLayoutDemo { public static void main(String[] args) { JFrame frame = new JFrame("GridBagLayout Demo"); JPanel panel = new JPanel(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.insets = new Insets(5, 5, 5, 5); gbc.gridx = 0; gbc.gridy = 0; panel.add(new JLabel("Name:"), gbc); gbc.gridx = 1; gbc.gridy = 0; panel.add(new JTextField(20), gbc); gbc.gridx = 0; gbc.gridy = 1; panel.add(new JLabel("Address:"), gbc); gbc.gridx = 1; gbc.gridy = 1; panel.add(new JTextField(20), gbc); frame.add(panel); frame.setSize(300, 200); frame.setVisible(true); } } ``` 在这个示例应用程序中,我们首先创建一个JFrame和一个JPanel。然后,我们将JPanel的布局管理器设置为GridBagLayout。 接下来,我们创建一个GridBagConstraints对象,并设置它的insets属性为一个Insets对象。Insets对象是一个包含四个整数值的对象,它们分别表示组件之间的左、上、右、下边距。在这个示例中,我们将insets设置为5像素。 然后,我们使用gbc对象来指定每个组件的网格坐标,即它们应该在网格的哪个位置。我们还可以使用gbc对象来指定每个组件应该占用的行和列的数量。 最后,我们将所有组件添加到JPanel中,并将JPanel添加到JFrame中。我们还设置了JFrame的大小并使其可见。 这只是GridBagLayout的一个简单示例,但它应该足以让您开始使用这个灵活的布局管理器。要深入了解GridBagLayout的更复杂的特性和用法,请参阅Java官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值