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.     

内容概要:本文介绍了如何使用Python识别图片和扫描PDF中的文字。首先,文章讲解了使用Spire.OCR for Python库来识别图片中的文字,包括安装库、配置OCR模型路径和语言设置、扫描图片以及保存识别后的文本。其次,详细描述了从图片中提取文字及其坐标位置的方法,使用户不仅能够获取文本内容,还能知道文本在图片中的具体位置。最后,文章还介绍了如何结合Spire.PDF for Python将PDF文件转换为图片格式,再通过OCR技术从中提取文字,适用于处理扫描版PDF文件。文中提供了完整的代码示例,帮助读者理解和实践。 适合人群:对Python编程有一定基础,希望学习或提高光学字符识别(OCR)技术的应用开发者,尤其是需要处理大量图片或PDF文档中文字信息的工作人员。 使用场景及目标:① 开发者可以利用这些方法自动化处理图片或PDF文档中的文字信息,提高工作效率;② 实现从非结构化数据(如图片、扫描件)到结构化数据(如文本文件)的转换,便于后续的数据分析和处理;③ 提供了一种解决纸质文档数字化的有效途径,特别是对于历史档案、书籍等资料的电子化保存。 其他说明:需要注意的是,OCR的准确性很大程度上取决于图片的质量,清晰度高、对比度好的图片可以获得更好的识别效果。此外,不同OCR库可能对特定语言或字体的支持程度不同,选择合适的库和配置参数能显著提升识别精度。在实际应用中,建议先进行小规模测试,优化参数后再大规模应用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值