当前位置:  技术问答>java相关

谁能给讲解一下GridBagLayout的用法(API没看懂)

    来源: 互联网  发布时间:2015-10-30

    本文导语:  我最近想用GridBagLayout 但是看不明白API,有那位大侠给讲一下:(从书上扒下来的也可以) 有详细解释的程序更好 | 从书上扒下来的 The GridBag Layout Manager GridBag is by far the most powerful layout ma...

我最近想用GridBagLayout

但是看不明白API,有那位大侠给讲一下:(从书上扒下来的也可以)

有详细解释的程序更好

|
从书上扒下来的
The GridBag Layout Manager
GridBag is by far the most powerful layout manager. It can perform the
work of the Flow, Grid, and Border layouts if appropriately programmed,
and is capable of much more besides, often without the need for nesting multiple
panels so often required with the other layout managers.
The GridBag layout divides its container into an array of cells, but (unlike
the cells of a Grid layout manager) different cell rows can have different
heights, and different cell columns can have different widths. A component
can occupy part or all of a region that is based on either a single cell or a rectangle
made up of multiple cells. A GridBag layout manager requires a lot of
information to know where to put a component. A helper class called
GridBagConstraints is used to hold all the layout position information.
When you add a component, you use the add(Component, Object) version
of the add() method, passing an instance of GridBagConstraints as the
Object parameter.
1. import java.awt.*;
2.
3. public class GB1 extends Panel {
4. private Panel tallPanel = new Panel();
5. private Panel tallPanel2 = new Panel();
6.
7. public GB1() {
8. tallPanel.setLayout(new GridLayout(3, 1));
9. tallPanel.add(new Button(“Press”));
10. tallPanel.add(new Button(“Any”));
11. tallPanel.add(new Button(“One”));
12.
13. tallPanel2.setLayout(new GridLayout(3, 1));
14. tallPanel2.add(new Button(“Don’t”));
15. tallPanel2.add(new Button(“Press”));
16. tallPanel2.add(new Button(“These”));
17.
18. setLayout(new GridBagLayout());
19.
20. GridBagConstraints c = new GridBagConstraints();
21. c.gridx = 0; c.gridy = 0;
22. add(new Button(“topleft”), c);
23. c.gridx = 1;
24. add(new Button(“topmiddle”), c);
25. c.gridx = 2;
26. add(new Button(“topright”), c);
27.
28. c.gridx = 0; c.gridy = 1;
29. add(new Button(“lefthandsidemiddle”), c);
30. c.gridx = 1;
31. add(tallPanel, c);
32.
33. c.gridy = 2; // note, sets _y_
34. add(new Button(“bottomcenter”), c);
35. c.gridx = 2;
36. add(tallPanel2, c);
37. }
38.
39. public static void main(String args[]) {
40. Frame f = new Frame(“GridBag 1 example”);
41. f.add(new GB1());
42. f.pack();
43. f.setVisible(true);
44. }
45. }

|
你用JBuilder直接用这个布局管理器就可以了,就是说先把容器设为null或xy布局,然后再往上放控件,调整好之后再把容器德布局管理器改为GridBagLayout,说起来很麻烦,如果自己写就更麻烦了。其实就是GridLayout的进一步细化,就是先分成大的网格(相当于GridLayout),然后再在每个网格中细分,格的宽度,坐标,在格中是居中还是靠那边,和格线的距离,主要是这些。

|
给你个例子 
 import java.awt.*;
 import java.util.*;
 import java.applet.Applet;

 public class GridBagEx1 extends Applet {

     protected void makebutton(String name,
                               GridBagLayout gridbag,
                               GridBagConstraints c) {
         Button button = new Button(name);
         gridbag.setConstraints(button, c);
         add(button);
     }

     public void init() {
         GridBagLayout gridbag = new GridBagLayout();
         GridBagConstraints c = new GridBagConstraints();

         setFont(new Font("Helvetica", Font.PLAIN, 14));
         setLayout(gridbag);

         c.fill = GridBagConstraints.BOTH;
         c.weightx = 1.0;
         makebutton("Button1", gridbag, c);
         makebutton("Button2", gridbag, c);
         makebutton("Button3", gridbag, c);

         c.gridwidth = GridBagConstraints.REMAINDER; //end row
         makebutton("Button4", gridbag, c);

         c.weightx = 0.0;    //reset to the default
         makebutton("Button5", gridbag, c); //another row

     c.gridwidth = GridBagConstraints.RELATIVE; //next-to-last in row
         makebutton("Button6", gridbag, c);

     c.gridwidth = GridBagConstraints.REMAINDER; //end row
         makebutton("Button7", gridbag, c);

     c.gridwidth = 1;        //reset to the default
     c.gridheight = 2;
         c.weighty = 1.0;
         makebutton("Button8", gridbag, c);

         c.weighty = 0.0;    //reset to the default
     c.gridwidth = GridBagConstraints.REMAINDER; //end row
     c.gridheight = 1;    //reset to the default
         makebutton("Button9", gridbag, c);
         makebutton("Button10", gridbag, c);

         setSize(300, 100);
     }

     public static void main(String args[]) {
     Frame f = new Frame("GridBag Layout Example");
     GridBagEx1 ex1 = new GridBagEx1();

     ex1.init();

     f.add("Center", ex1);
     f.pack();
     f.setSize(f.getPreferredSize());
     f.show();
     }
 }


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 对java api上关于StreamTokenizer的讲解不太清楚,哪位能帮忙解说一下,最好再给点例子,谢谢
  • -- 哪位大侠给我讲解、讲解这个口令啥意思? --
  • 100分求学“流”!流好难理解啊。谁能来讲解讲解吗?
  • 谁能给我讲解一下weblogic最基本的配置(希望你看在分的面子上,给我讲解讲解吧)
  • 关于尚德讲解的视频资料
  • 哪本linux源码分析的书里详细讲解了Linux的核心启动代码
  • 谁能给我详细讲解一下分区,文件系统的概念?
  • 有没有linux下讲解网络协议的好书?
  • 哪里有讲解J2EE和EJB的电子书下载?
  • 寻本详细讲解MAKEFILE和各编译器的书
  • 哪位能给讲解一下atomic_read()?
  • 谁来讲解一下linux下gtkmm的消息处理机制?[300分,讲得好的话,另加300分] 领分区01
  • 谁来讲解一下linux下gtkmm的消息处理机制?[300分,讲得好的话,另加300分]的领分区02
  • 100分求个详细讲解
  • 请高手给讲解一下堆栈、堆、静态存储等概念
  • 哪位老大详细地讲解一下内核线程和轻量级进程、分别如何创建?多谢了。
  • 高手指点:听说jdk1.4能设置超时,请讲解一下?
  • ★★谁能详细的给我讲解synchronized的使用
  • 有没有比较经典的讲解makefile的教材/材料/电子书籍
  • 在线等!谁能给我讲解下这个图啊,linux tcp
  • 求大神详细讲解下KDbg的使用方法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3