• java学习笔记 布局管理器


    不设布局管理器(把默认布局管理器设为null),手动设置frame里面图形元素位置,则不会根据frame的大小而做出位置的调整

    FlowLayout

    flowLayout是Panel类的默认布局管理器,flow表示流水,默认对齐方式是居中

    import java.awt.*;
    
    public class Test {
        public static void main(String[] args) {
            Frame f1 = new Frame();
            f1.setSize(300,200);
            
            //f1.setLayout(new FlowLayout());
            //f1.setLayout(new FlowLayout(FlowLayout.LEFT));
            //f1.setLayout(new FlowLayout(FlowLayout.LEADING));
            //f1.setLayout(new FlowLayout(FlowLayout.TRAILING));
            f1.setLayout(new FlowLayout(FlowLayout.CENTER,50,50));
            f1.setBackground(Color.LIGHT_GRAY);
            
            
            Button b1 = new Button();
            Button b2 = new Button();
            Button b3 = new Button();
            Button b4 = new Button();
            Button b5 = new Button("b5");
            
            f1.add(b1);
            f1.add(b2);
            f1.add(b3);
            f1.add(b4);
            f1.add(b5);
            f1.setVisible(true);
        }    
    }
    
    /*
    1.在panel里面添加 button 如何让button显示出来?
    */

    显示:

    r1

    BorderLayout

    BorderLayout是Frame类的默认布局管理器,BorderLayout将整个容器的布局划分成 :东 EAST 、西 WEST、南SOUTH、北NORTH、中CENTER五个区域,如不指定加入容器区域,则默认加入CERNTER。

    每个区域只能加入一个组件,如加入多个,则先前加入的会被覆盖

    BorderLayout型布局管理器缩放原则:北南两个区域在水平方向上缩放,东西两个区域在垂直方向上缩放,中部在两个方向上缩放。

    import java.awt.*;
    
    public class Test {
        public static void main(String[] args) {
            Frame f1 = new Frame();
            //f1.setSize(200,150);
            
            //如果不设定frame的大小
            f1.pack();
            
            f1.setBackground(Color.BLACK);
          f1.setLayout(new GridLayout(4,2));
            Button b1 = new Button("E");
            Button b2 = new Button("W");
            Button b3 = new Button("S");
            Button b4 = new Button("N");
            Button b5 = new Button("C");
            f1.add(b1);
            f1.add(b2);
            f1.add(b3);
        f1.add(b4);
            f1.add(b5);
            f1.setVisible(true);
        }    
    }

    显示

    r2

    练习:创建一个图形,显示如下

    r3

    import java.awt.*;
    
    public class Test {
        public static void main(String[] args) {
            Frame f1 = new Frame();
            f1.setSize(600,400);
            Panel p1 = new Panel();
            Panel p2 = new Panel();
            p1.setBackground(Color.YELLOW);
            p2.setBackground(Color.YELLOW);
            f1.setLayout(new GridLayout(2,1));
            
            p1.setLayout(new BorderLayout());
          Panel p3 = new Panel();
            p1.add(new Button("Button"),BorderLayout.EAST);    
            p1.add(new Button("Button"),BorderLayout.WEST);
            p1.add(p3,BorderLayout.CENTER);
            p3.setLayout(new GridLayout(2,1));
            p3.add(new Button("Button"));
            p3.add(new Button("Button"));
            f1.add(p1);
            
            p2.setLayout(new BorderLayout());
          Panel p4 = new Panel();
            p2.add(new Button("Button"),BorderLayout.EAST);    
            p2.add(new Button("Button"),BorderLayout.WEST);
            p2.add(p4,BorderLayout.CENTER);
            p4.setLayout(new GridLayout(2,2));
            p4.add(new Button("Button"));
            p4.add(new Button("Button"));
            p4.add(new Button("Button"));
            p4.add(new Button("Button"));
            f1.add(p2);
            f1.setVisible(true);
        }    
    }
    显示:

    r4

    注意:使用布局管理器时,布局管理器负责各个组件的大小和位置,因此用户无法在这种情况下设置组件大小和位置属性,如果试图使用Java语言提供的setLocation(),setSize(),setBounds()等方法,则都会被布局管理器覆盖,就是全权交给布局管理器来处理。

  • 相关阅读:
    mysql TO_DAYS()函数
    MySQL year函数
    protobuff java 包编译(Windows)
    苹果笔记本只有电源键能用的解决办法
    linux普通用户获取管理员权限
    linux用户管理
    基于ASIHTTPRequest封装的HttpClient
    Object-C 多线程中锁的使用-NSLock
    appstore 上传需要的icon
    iPhone之IOS5内存管理(ARC技术概述)
  • 原文地址:https://www.cnblogs.com/yhwsy/p/5848428.html
Copyright © 2020-2023  润新知