精华内容
下载资源
问答
  • 实验二 布局管理器及简单控件的使用
  • BorderLayout——边界布局管理器:FlowLayout——流式布局管理器:GridLayout——网格布局:CardLayout——卡片式布局:...
  • MFC布局管理器

    2016-12-12 20:54:06
    实现了一个MFC的盒子布局管理器类CBoxLayout
  • 布局管理器

    千次阅读 2018-11-03 21:24:25
    每个Container都有一个布局管理器对象,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器,调用Container的setLayout方法改变其布局管理器对象 AWT提供了5种布局管理器类: ...
    • Java语言中,提供了布局管理器类的对象
      • 管理Component在Container中的布局,不必直接设置Component位置和大小
      • 每个Container都有一个布局管理器对象,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器,调用Container的setLayout方法改变其布局管理器对象
    • AWT提供了5种布局管理器类:
      • FlowLayout
      • BorderLayout
      • GridLayout
      • CardLayout
      • GridBagLayout

    针对我们之前留下的题目来说,当缩放外层Frame窗口的大小时,内层Panel并不会随之改变大小,所以我们需要一个事件监听,让他能够随之改变,但是这样太麻烦了,于是Java给我们提供了一个布局管理器类,这个布局管理器举个例子相当于一个大管家,房子相当于Frame,其中的家具就相当于Frame里的元素,我们只管把元素往Frame里丢,不用管怎么排列,大管家自动帮我们排列。不同的布局管理器有不同的风格

    FlowLayout布局管理器

    • FlowLayout是Panel类的默认布局管理器
      • FlowLayout布局管理器对组件逐行定位,行内从左到右,一行排满后换行
      • 不改变组件大小,按组件原有尺寸显示组件,可设置间距,行距以及默认对齐方式(默认是居中)
    • FlowLayout的构造方法
      • FlowLayout(FlowLayout.RIGHT,20,40):右对齐,组件间水平间距20,垂直间距40
      • FlowLayout(FlowLayout.LEFT):左对齐,水平和垂直间距为缺省值(5)
      • FlowLayout():使用缺省的居中对齐方式,水平和垂直间距为缺省值(5)
    import java.awt.*;
    public class TestFlowLayout {
    	public static void main(String[] args) {
    		Frame f = new Frame("Flow Layout");
    		Button b1 = new Button("Ok");
    		Button b2 = new Button("Open");
    		Button b3 = new Button("Close");
    		f.setLayout(new FlowLayout());
    		f.add(b1);
    		f.add(b2);
    		f.add(b3);
    		f.setSize(400,400);
    		f.setBackground(Color.red);
    		f.setVisible(true);
    	}
    }
    

    image

    BorderLayout布局管理器

    • BorderLayout是Frame类的默认布局管理器
    • BorderLayout将整个容器的布局划分成
      • 东(EAST)
      • 西(WEST)
      • 南(SOUTH)
      • 北(NORTH)
      • 中(CENTER)五个区域,组件只能添加到指定的区域
    • 如不制定组件的假如部位,则默认加入到Center区
    • 每个区域只能加入一个组件,如加入多个,则先前加入的会被覆盖(可以加入一个Panel,然后往Panel里加入组件)
    • BoderLayout型布局管理器尺寸缩放原则
      • 北、南两个区域在水平方向缩放
      • 东、西两个区域在垂直方向缩放
      • 中部在两个方向都缩放
    import java.awt.*;
    public class TestBorderLayout {
    	public static void main(String[] args) {
    		Frame f;
    		f = new Frame("Test BorderLayout");
    		Button bn = new Button("bn");
    		Button bs = new Button("bs");
    		Button bw = new Button("bw");
    		Button be = new Button("be");
    		Button bc = new Button("bc");
    		/*
    		f.add(bn,"north");
    		f.add(bs,"south");
    		f.add(bw,"west");
    		f.add(be,"east");
    		f.add(bc,"center");
    		*/
    		f.add(bn,BorderLayout.NORTH);
    		f.add(bs,BorderLayout.SOUTH);
    		f.add(bw,BorderLayout.WEST);
    		f.add(be,BorderLayout.EAST);
    		f.add(bc,BorderLayout.CENTER);
    		f.setSize(500,500);
    		f.setVisible(true);
    	}
    }
    

    不建议用注释内的方法,因为一旦写错,编译不会报错,运行时会报错
    image

    GridLayout布局管理器

    • GridLayout型布局管理器将空间划分成规则的矩形网格,每个单元格区域大小相等。组件被添加到每个单元格中,先从左到右添满一行后换行,再从上到下
    • 在GridLayout构造方法中制定分割的行数和列数
      • 如:GridLayout(3,4)
    import java.awt.*;
    public class TestGridLayout {
    	public static void main(String[] args) {
    		Frame f = new Frame("Test GridLayout");
    		for(int i = 1;i <= 6;i++) 
    			f.add(new Button("B" + i));
    		f.setLayout(new GridLayout(3,2));
    		f.pack();
    		f.setVisible(true);
    	}
    }
    

     pack方法是使得Frame窗口刚好包住其中的元素的大小

    题目

    做出下图所示的窗口界面

    import java.awt.*;
    public class TenButtons {
    
    	public static void main(String[] args) {
    		Frame f = new Frame("Java Frame");
    		f.setLayout(new GridLayout(2,1));
    		f.setLocation(300,400);
    		f.setSize(400,400);
    		f.setBackground(Color.red);
    		Panel p1 = new Panel(new BorderLayout());
    		Panel p2 = new Panel(new BorderLayout());
    		Panel p11 = new Panel(new GridLayout(2,1));
    		Panel p22 = new Panel(new GridLayout(2,2));
    		p1.add(new Button("Button"),BorderLayout.WEST);
    		p1.add(new Button("Button"),BorderLayout.EAST);
    		p11.add(new Button("Button"));
    		p11.add(new Button("Button"));
    		p1.add(p11,BorderLayout.CENTER);
    		p2.add(new Button("Button"),BorderLayout.WEST);
    		p2.add(new Button("Button"),BorderLayout.EAST);
    		for(int i = 1;i <= 4;i++) 
    			p22.add(new Button("Button"));
    		p2.add(p22,BorderLayout.CENTER);
    		f.add(p1);
    		f.add(p2);
    		f.setVisible(true);
    	}
    
    }
    
    

    布局管理器总结

    • Frame是一个顶级窗口,Frame的缺省布局管理器为BorderLayout
    • Panel无法单独显示,必须添加到某个容器中
      • Panel的缺省布局管理器为FlowLayout
    • 当把Panel作为一个组件添加到某个容器中后,该Panel仍然可以有自己的布局管理器
    • 使用布局管理器时布局管理器负责各个组件的大小和位置,因此用户无法在这种情况下设置组件大小和位置属性,如果试图用Java语言提供的setLocation(),setSize()等方法,则都会被布局管理器覆盖
    • 如果用户确需要亲自设置组件大小或位置,则应取消该容器的布局管理器,方法为:
      • setLayout(null)
    展开全文
  • Java布局管理器

    千次阅读 2018-10-21 02:17:11
    一、布局管理器概念:各组件在容器中的大小以及摆放位置。实现跨平台特性并获得动态布局的效果;Java组件布局由布局管理器对象来管理;布局管理器会确定组件打大小和位置;在容器发生变化是做出动态调整。 二、布局...

    一、布局管理器概念:各组件在容器中的大小以及摆放位置。实现跨平台特性并获得动态布局的效果;Java组件布局由布局管理器对象来管理;布局管理器会确定组件打大小和位置;在容器发生变化是做出动态调整。

    二、布局管理器的分类

           FlowLayout:流式布局管理器

           BorderLayout:边界布局管理器

           GridLayout:网格布局管理器

           GridBagLayout:网格组布局管理器

           GardLayout:卡片布局管理器

           BoxLayout:箱式布局管理器

           SpringLayout:弹簧布局管理器

    1、FlowLayout:流式布局管理器

          组件加入容器的顺序是从左到右,容器大小改变时组件大小不改变,位置会改变

    代码如下:

    package Layout;
    import java.awt.*;
    import javax.swing.*;
    
    class FlowLayoutDemo {
    	JFrame frame;
    	JButton button1,button2,button3,button4,button5,button6;
    	public FlowLayoutDemo(String title) {
    		frame = new JFrame(title);
    		frame.setSize(260, 150);
    		button1 = new JButton("按钮一");
    		button2 = new JButton("按钮二");
    		button3 = new JButton("按钮三");
    		button4 = new JButton("按钮四");
    		button5 = new JButton("按钮五");
    		button6 = new JButton("按钮六");
    		
    		//设置流式布局管理器
    		frame.getContentPane().setLayout(new FlowLayout());
    		frame.add(button1);
    		frame.add(button2);
    		frame.add(button3);
    		frame.add(button4);
    		frame.add(button5);
    		frame.add(button6);
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
    }
    
    package Layout;
    
    public class FlowLayoutDemo_App {
    
    	public static void main(String[] args) {
    		new FlowLayoutDemo("FlowLayout");
    	}
    
    }
    

    运行结果:

    public  FlowLayout():构造方法,新建流式布局管理器

    public  FlowLayout(int  align):构造方法,新建有指定对齐方式的管理器,比如向左、向右、居中

    .....................

    2、 BorderLayout:边界布局管理器

           边界布局管理器将容器分为EAST(东区)、WEST(西区)、SOUTH(南区)、NORTH(北区)、CENTER(中心区),组件放入区域后将自动铺满区域或则最多可以放置一个组件,要在一个区域放置多个组件时就要在该区域放置一个中间层容器,再将组件放到容器中;中间区域没有放置组件这个区域依然会保留,其他的则不会。

    代码如下:

    package Layout;
    import java.awt.*;
    import javax.swing.*;
    
    class BorderLayoutDemo {
    	JFrame frame;
    	JButton buttonEAST,buttonWEST,buttonSOUTH,buttonNORTH,buttonCENTER;
    	public BorderLayoutDemo(String title) {
    		frame = new JFrame(title);
    		frame.setSize(450, 300);
    		Container container = frame.getContentPane();
    		
    		//设置为边界布局,组件水平距离和垂直间距都为2
    		container.setLayout(new BorderLayout(2,2));
    		buttonEAST = new JButton("东区");
    		buttonWEST = new JButton("西区");
    		buttonSOUTH =new JButton("南区");
    		buttonNORTH = new JButton("北区");
    		buttonCENTER = new JButton("中心区");
    		buttonEAST.setBackground(Color.red);
    		buttonWEST.setBackground(Color.gray);
    		buttonSOUTH.setBackground(Color.LIGHT_GRAY);
    		buttonNORTH.setBackground(Color.darkGray);
    		buttonCENTER.setBackground(Color.yellow);
    		
    		frame.add(BorderLayout.EAST,buttonEAST);
    		frame.add(BorderLayout.WEST, buttonWEST);
    		frame.add(BorderLayout.SOUTH, buttonSOUTH);
    		frame.add(BorderLayout.NORTH, buttonNORTH);
    		frame.add(BorderLayout.CENTER, buttonCENTER);
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
    }
    
    package Layout;
    
    public class BorderLayoutDemo_App {
    
    	public static void main(String[] args) {
    		new BorderLayoutDemo("BorderLayout");
    	}
    
    }
    

    运行结果:

    public  BorderLayout():构造方法,创建边界布局管理器,组件之间距离为0

    public  BorderLayout(int  hgap,int  vgap):构造方法,新建指定组件间距的边界布局管理器

    public  void setHgap(int hgap):设置组件之间的水平距离

    public  void setVgap(int  vgap):设置组件之间的垂直距离

    3、  GridLayout:网格布局管理器

    网格布局管理器将容器平均分成若干行、若干列,每个网格的高和宽都相同、只能放置一个组件,组件放到容器时,按照添加顺序从左到右、从上到下放入网格。

    代码如下:

    package Layout;
    import javax.swing.*;
    import java.awt.*;
    
    class GridLayoutDemo {
    	JFrame frame;
    	JButton btn1,btn2,btn3,btn4,btn5,btn6,btn7;
    	GridLayoutDemo() {
    		frame = new JFrame("GridLayout");
    		Container container = frame.getContentPane();
    		
    		//创建三行三列的网格布局管理器
    		container.setLayout(new GridLayout(3, 3));
    		btn1 = new JButton("按钮1");
    		btn2 = new JButton("按钮2");
    		btn3 = new JButton("按钮3");
    		btn4 = new JButton("按钮4");
    		btn5 = new JButton("按钮5");
    		btn6 = new JButton("按钮6");
    		btn7 = new JButton("按钮7");
    		
    		frame.add(btn1);
    		frame.add(btn2);
    		frame.add(btn3);
    		frame.add(btn4);
    		frame.add(btn5);
    		frame.add(btn6);
    		frame.add(btn7);
    		frame.setSize(550, 300);
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
    }
    
    package Layout;
    
    public class GridLayoutDemo_App {
    
    	public static void main(String[] args) {
    		new GridLayoutDemo();
    	}
    
    }
    

    运行结果:

    网格布局的特点:

    (1)、组件在容器中呈网状分布

    (2)、网格的宽度相同,等于容器的宽度除网格的列数,高度相同,等于容器的高度除网格的行数

    (3)、从左到右、从上到下排列

    (4)、容器大小改变,组件的相对位置不会改变,大小会改变

    (5)、添加的组件数超过设定的网格数,布局自动增加网格数,原则是保持行数不变

    4、GardLayout:卡片布局管理器

    主要用于处理多个组件共享同一显示空间的情况

    代码如下:

    package Layout;
    import java.awt.*;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    
    import javax.swing.*;
    
    class CradLayoutDemo extends MouseAdapter{
    	JFrame frame;
    	JPanel panel;
    	JLabel label;
    	JButton btn;
    	Container contentPan;
    	CardLayout cardLayout;  //声明卡片布局管理器对象
    	CradLayoutDemo(){
    		frame = new JFrame("CardLayout");
    		contentPan = frame.getContentPane();  //getContentPane()方法获得JFrame的内容面板
    		cardLayout = new CardLayout();  //创建卡片布局管理器
    		contentPan.setLayout(cardLayout);    //为frame设置卡片布局管理器
    		
    		//创建组件
    		panel = new JPanel();
    		JLabel labelPanel = new JLabel("这是一个面板");
    		panel.add(labelPanel);
    		label = new JLabel("这是一个标签");
    		btn = new JButton("这是一个按钮");
    		
    		//将组件添加到frame中,每个组件赋予一个名字
    		frame.add(panel,"panel");
    		frame.add(label,"label");
    		frame.add(btn,"btn");
    		frame.add(panel,"panel");
    		
    		//显示面板
    		cardLayout.show(contentPan, "panel");
    		
    		frame.setSize(540, 380);
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		
    		//组件的事件注册
    		panel.addMouseListener(this);
    		label.addMouseListener(this);
    		btn.addMouseListener(this);
    	}
    	
    	public void mouseClicked(MouseEvent e) {
    		cardLayout.next(contentPan);
    	}
    	
    }
    
    package Layout;
    
    import java.awt.CardLayout;
    
    public class CradLayoutDemo_App {
    
    	public static void main(String[] args) {
    		new CradLayoutDemo();
    	}
    
    }
    

    运行结果:

     

    展开全文
  • Java AWT 布局管理器

    千次阅读 2020-03-16 05:31:38
    本文介绍了 Java AWT 中布局管理器的相关内容。。。


    布局管理器

    • 在 java.awt 包中提供了 5 种布局管理器,分别是 FlowLayout( 流式布局管理器)、BorderLayout(边界布局管理器)、GridLayout(网格布局管理器)、GridBagLayout(网格包布局管理器)和 CardLayout(卡片布局管理器)。每个容器在创建时都会使用一种默认的布局管理器,在程序中可以通过调用容器对象的 setLayout() 方法设置布局管理器,通过布局管理器自动进行组件的布局管理;
    • 例如, 把一个 Frame 窗体的布局管理器设置为 FlowLayout,代码如下:
      • Frame frame = new Frame();
      • frame.setLayout(new FlowLayout());

    1. 流式布局管理器

    • 流式布局管理器(FlowLayout)是最简单的布局管理器,在这种布局下,容器会将组件按照添加顺序从左向右放置。当到达容器的边界时,会自动将组件放到下一行的开始位置。这些组件可以左对齐、居中对齐(默认方式)或右对齐的方式排列;
    • java.awt.FlowLayout,详见:Class FlowLayout
    • 流式布局管理器 FlowLayout 的应用:
    import java.awt.*;
    
    public class Test {
        public static void main(String[] args) {
            Frame f = new Frame("Regino");
            f.setLayout(new FlowLayout(FlowLayout.LEFT, 20, 30));//(左对齐,水平间距,垂直边距)
            f.setSize(200, 300);//(宽,高)
            f.setLocation(300, 200);//(x, y)
            f.setVisible(true);//窗体可见
            f.add(new Button("First"));
            f.add(new Button("Second"));
            f.add(new Button("Third"));
            f.add(new Button("Forth"));
        }
    }
    
    • 效果图:
      1

    2. 边界布局管理器

    • BorderLayout(边界布局管理器)是一种较为复杂的布局方式,它将容器划分为5个区域,分别是东(EAST)、南(SOUTH)、西(WEST)、北(NORTH)、中(CENTER)。组件可以被放置在这 5 个区域中的任意一个;
    • java.awt.BorderLayout,详见:Class BorderLayout
    • 边界布局管理器 BordLayout 的应用:
    import java.awt.*;
    
    public class Test {
        public static void main(String[] args) {
            Frame f = new Frame("Regino");
            f.setLayout(new BorderLayout());//BorderLayout
            f.setSize(200, 300);//(宽,高)
            f.setLocation(300, 200);//(x, y)
            f.setVisible(true);//窗体可见
            f.add(new Button("First"), BorderLayout.EAST);
            f.add(new Button("Second"), BorderLayout.WEST);
            f.add(new Button("Third"), BorderLayout.SOUTH);
            f.add(new Button("Forth"), BorderLayout.NORTH);
            f.add(new Button("Fifth"), BorderLayout.CENTER);
        }
    }
    
    • 效果图:
      2

    3. 网格布局管理器

    • GridLayout(网格布局管理器)使用纵横线将容器分成 n 行 m 列大小相等的网格,每个网格中放置一个组件。添加到容器中的组件首先放置在第1行第1列(左上角)的网格中, 然后在第1行的网格中从左向右依次放置其他组件,第1行满后,继续在下一行中从左到右放置组件。与 FlowLayout 不同的是,放置在 GridLayout 布局管理器中的组件将自动占据网格的整个区域;
    • java.awt.GridLayout,详见:Class GridLayout
    • 网格布局管理器 GridLayout 的应用:
    import java.awt.*;
    
    public class Test {
        public static void main(String[] args) {
            Frame f = new Frame("Regino");
            f.setLayout(new GridLayout(2,2));//GridLayout
            f.setSize(200, 300);//(宽,高)
            f.setLocation(300, 200);//(x, y)
            f.setVisible(true);//窗体可见
            f.add(new Button("1"));
            f.add(new Button("2"));
            f.add(new Button("3"));
            f.add(new Button("4"));
        }
    }
    
    • 效果图:
      3

    4. 网格包布局管理器

    • GridBagLayout(网格包布局管理器)是最灵活、最复杂的布局管理器。它与 GridLayout 布局管理器类似,不同的是,它允许网格中的组件大小各不相同,而且允许一个组件跨越一个或者多个网格;
    • java.awt.GridBagLayout,详见:Class GridBagLayout
    • 网格包布局管理器 GridBagLayout 的应用:
    import java.awt.*;
    
    class Layout extends Frame {
        Layout(String title) {
            GridBagLayout layout = new GridBagLayout();//创建布局管理器GridBagLayout,并使容器layout采用该布局管理器
            GridBagConstraints c = new GridBagConstraints();//创建布局约束条件GridBagConstraints
            this.setLayout(layout);
            c.fill = GridBagConstraints.BOTH;//设置横纵向可以拉伸
    
            c.weightx = 1;//设置横向权重,即占用多余的水平方向和垂直方向空白的比例(默认值是0),
            // 例如:3个容器的weightx分别为1,2,3时,容器宽度增加60则这3个容器分别增加10,20,30
            c.weighty = 1;//设置纵向权重
            this.addComponent("11", layout, c);
            this.addComponent("12", layout, c);
            this.addComponent("13", layout, c);
            c.gridwidth = GridBagConstraints.REMAINDER;//添加的组件将是本行的最后一个
            this.addComponent("14", layout, c);
    
            c.weightx = 0;
            c.weighty = 0;
            addComponent("21", layout, c);
            c.gridwidth = 1;//设置组件跨一个网格(默认值是1)
    
            this.addComponent("31", layout, c);
            c.gridwidth = GridBagConstraints.REMAINDER;
            this.addComponent("32", layout, c);
    
            c.gridheight = 2;
            c.gridwidth = 1;
            c.weightx = 2;
            c.weighty = 2;
            this.addComponent("41", layout, c);
            c.gridwidth = GridBagConstraints.REMAINDER;
            c.gridheight = 1;
            this.addComponent("42", layout, c);
            this.addComponent("42", layout, c);
    
            this.setTitle(title);
            this.pack();
            this.setVisible(true);
        }
    
        private void addComponent(String name, GridBagLayout layout, GridBagConstraints c) {
            Button b = new Button(name);//创建一个名为name的按钮
            layout.setConstraints(b, c);//设置按钮与GridBagConstraints对象关联
            this.add(b);//增加按钮
        }
    }
    
    public class Test {
        public static void main(String[] args) {
            new Layout("Regino");
        }
    }
    
    • 效果图:
      4

    5. 卡片布局管理器

    • 在操作程序时,经常会通过选项卡来切换程序中的界面,这些界面就相当于一张张卡片,而管理这些卡片的布局管理器就是卡片布局管理器(CardLayout)。卡片布局管理器将界面看作一系列卡片,在任何时候只有其中一张卡片是可见的,这张卡片占据容器的整个区域;
    • java.awt.CardLayout,详见:Class CardLayout
    • 卡片布局管理器 CardLayout 的应用:
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    class Cardlayout extends Frame implements ActionListener {
        Panel cardPanel = new Panel(); // 定义Panel面板放置卡片
        Panel controlpaPanel = new Panel(); // 定义Panel面板放置按钮
        Button nextbutton, preButton;       //声明两个按钮
        CardLayout cardLayout = new CardLayout();// 定义卡片布局对象
    
        // 定义构造方法,设置卡片布局管理器的属性
        public Cardlayout() {
            setSize(300, 200);
            setVisible(true);
            // 为窗口添加关闭事件监听器
            this.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    Cardlayout.this.dispose();
                }
            });
            cardPanel.setLayout(cardLayout); // 设置cardPanel面板对象为卡片布局
            // 在cardPanel面板对象中添加3个文本标签
            cardPanel.add(new Label("page 1", Label.CENTER));
            cardPanel.add(new Label("page 2", Label.CENTER));
            cardPanel.add(new Label("page 3", Label.CENTER));
            // 创建两个按钮对象
            nextbutton = new Button("next");
            preButton = new Button("pre");
            // 为按钮对象注册监听器
            nextbutton.addActionListener(this);
            preButton.addActionListener(this);
            // 将按钮添加到controlpaPanel中
            controlpaPanel.add(preButton);
            controlpaPanel.add(nextbutton);
            // 将cardPanel面板放置在窗口边界布局的中间,窗口默认为边界布局
            this.add(cardPanel, BorderLayout.CENTER);
            // 将controlpaPanel面板放置在窗口边界布局的南区,
            this.add(controlpaPanel, BorderLayout.SOUTH);
        }
    
        // 下面的代码实现了按钮的监听触发,并对触发事件做出相应的处理
        public void actionPerformed(ActionEvent e) {
            // 如果用户单击nextbutton,执行的语句
            if (e.getSource() == nextbutton) {
                // 切换cardPanel面板中当前组件之后的一个组件,若当前组件为最后一个组件,则显示第一个组件。
                cardLayout.next(cardPanel);
            }
            if (e.getSource() == preButton) {
                // 切换cardPanel面板中当前组件之前的一个组件,若当前组件为第一个组件,则显示最后一个组件。
                cardLayout.previous(cardPanel);
            }
        }
    }
    
    public class Test {
        public static void main(String[] args) {
            Cardlayout cardlayout = new Cardlayout();
        }
    }
    
    • 效果图:
      5

    6. 自定义布局

    • 当一个容器被创建后,都会有一个默认的布局管理器。Window、Frame 和 Dialog 的默认布局管理器是 BorderLayout,Panel 的默认布局管理器是 FlowLayout。如果不希望通过布局管理器对容器进行布局,也可以调用容器的 setLayout(null) 方法,将布局管理器取消。在这种情况下,程序必须调用容器中每个组件的 setSize() 和 setLocation() 方法或者 setBounds() 方法( 这个方法接收 4 个参数,分别是左上角的 x、 y 坐标和组件的长、 宽),为这些组件在容器中定位;
    • 应用自定义布局:
    import java.awt.*;
    
    public class Test {
        public static void main(String[] args) {
            Frame f = new Frame("Regino");
            f.setLayout(null); // 取消 frame的布局管理器
            f.setSize(300, 150);
            Button btn1 = new Button("press");
            Button btn2 = new Button("pop");
            btn1.setBounds(40, 60, 100, 30);
            btn2.setBounds(140, 90, 100, 30);
            // 在窗口中添加按钮
            f.add(btn1);
            f.add(btn2);
            f.setVisible(true);
        }
    }
    
    • 效果图:
      6
    展开全文
  • Java中提供了几种布局管理器

    千次阅读 2021-03-05 21:16:46
    近日,很多网友都在关注Java中提供了几种布局管理器这个话题,那么Java中提供了几种布局管理器具体情况是怎么样的呢?Java中提供了几种布局管理器的相关信息有哪些?下面的内容是小编为大家找到的关于Java中提供了几...

    近日,很多网友都在关注Java中提供了几种布局管理器这个话题,那么Java中提供了几种布局管理器具体情况是怎么样的呢?Java中提供了几种布局管理器的相关信息有哪些?下面的内容是小编为大家找到的关于Java中提供了几种布局管理器的最新信息,大家一起来看看吧!

    答案1:java中布局管理器有几种 都有什么

    怎么才6种呢?10多20种,你自已去JAVA的API里面查看吧,

    java.awt包中大约有

    FlowLayout 流式布局

    BorderLayout 边框式布局

    GridLayout 网格布局

    CardLayout 卡片布局

    GridBagLayout 复杂的网格布局

    javax.swing包中大约有如下布局

    BoxLayout 盒式布局

    OverlayLayout重叠布局

    ScrollPaneLayout类JScrollPane使用的布局管理器

    ViewportLayout类JViewport使用的布局管理器

    答案2:JAVA中,Frame和Panel默认的布局管理器分别是什么类型?

    JAVA中,Framel默认的布局管理器是BorderLayout类型,Panel默认的布局管理器是FlowLayout类型。

    FlowLayout是Panel 和 Applet 的默认布局管理器。在该布局管理器中,组件在容器中按照从上到下,从左到右的顺序进行排列,行满后则换行。

    BorderLayout是Window、Frame和Dialog的默认布局管理器,其将容器分成North、South、East、West和Center 5个区域,每个区域只能放置一个组件。使用BorderLayout时,如果容器大小发生变换,组件的相对位置不变。

    877d2371379a72ed528f9007681c162c.png

    扩展资料:

    其它相关的布局管理器:

    1、网格布局管理器(GridLayout):

    GridLayout 可使容器中的各个组件呈网格状布局,平局占据容器的空间,即使容器的大小发生变化,每个组件还是平均占据容器的空间。和FlowLayout一样,GridLayout也是按照从上到下,从左到右的规律进行排列的。

    2、卡片布局管理器(CardLayout):

    CardLayout能够帮助用户处理两个乃至跟多的成员共享同一显示空间。它把容器分成许多层,每层的显示空间占据整个容器的大小,并且每层之允许反之一个组件,可以通过Panel来实现每层复杂的用户界面。

    答案3:Java的AWT包与Swing包提供了那些布局管理器

    布局管理器分为6种:

    FlowLayout 流式布局管理器

    GridLayout 网格布局管理器

    GridBagLayout 网格包布局管理器

    BorderLayout 边界布局管理器

    CardLayout 卡片布局管理器

    BoxLayout

    这个是Swing与AWT新增加的。

    答案4:布局管理器的作用是什么?JAVA提供了哪几种布局管理器?

    控制组件在窗体中的排列顺序和位置,常用的布局管理器有:

    FlowLayout 流式布局

    BorderLayout 边框式布局

    GridLayout 网格布局

    CardLayout 卡片布局

    GridBagLayout 复杂的网格布局

    还有其他的布局管理器 具体请看API

    答案5:java中,布局管理器的含义和基本特点是什么

    JAVA是与平台无关的,什么叫与平台无关呢,就是应用程序的界面的大小,位置与硬件没关系,与平台无关就是说你不能通过setSize()这样的方法去设置窗体中组件的大小。由此问题产生了。

    当一个窗体中有文本控件,又有标签,还有按钮,这时你怎么控制它们在窗体中的排列顺序和位置呢,JAVA定义了布局管理器来处理这个问题

    这就是布局管理器的作用

    展开全文
  • Java Swing布局管理器

    万次阅读 多人点赞 2019-03-05 01:33:35
    如果不使用布局管理器,则需要先在纸上画好各个组件的位置并计算组件间的距离,再向容器中添加。这样虽然能够灵活控制组件的位置,实现却非常麻烦。 为了加快开发速度,Java 提供了一些布局管理器,它们可以将组件...
  • 主要介绍了Java Swing组件布局管理器之FlowLayout(流式布局),结合实例形式分析了Swing组件布局管理器FlowLayout流式布局的常用方法及相关使用技巧,需要的朋友可以参考下
  • 本文主要讲解Swing程序设计中容器、面板及四大布局管理器的详细使用、包括实例程序讲解、使用注意及使用技巧分享、敬请阅读! 目录 什么是容器? 什么是面板? JPanel面板 JScrollPane面板 什么是布局管理器...
  • QT 常用布局管理器

    千次阅读 2019-09-07 00:03:24
    QT主要布局管理器分类 QHBoxLayout(水平布局) 把子窗口从左到右排列在一个水平行上。 QWidget *window = new QWidget; QPushButton *button1 = new QPushButton("One"); QPushButton *button2 = new ...
  • 布局管理器的使用

    2014-10-10 21:22:11
    布局管理器的使用 里面包含多个实例 都是可以运行的
  • 布局管理器允许您设置和保存窗口布局稍后重新加载。 每次需要执行任务时都要安排布局会非常耗时。 LexisNexis布局管理器使您可以非常轻松地记住您在多个或单个屏幕中的所有Chrome窗口和布局位置。 完成安装后,您...
  • ​ GridLayout 布局管理器将容器分割成纵横线分隔的网格 , 每个网格所占的区域大小相同。当向使用 GridLayout 布局管理器的容器中添加组件时, 默认从左向右、 从上向下依次添加到每个网格中 。 与 FlowLayout不同...
  • Qt之布局管理器使用

    千次阅读 2018-04-13 10:33:10
    如下图:水平布局管理器可以把它所管理的部件以水平的顺序依次排开,例如上图中中间的“Centigrade”和“Fahrenheit”两段文字,就是水平排列的,这个时候就可以用水平布局管理器来实现。垂直管理器类似,它可以把它...
  • package hanjia; import javax.swing.JButton; ...public class hanjia extends JFrame {//JFrame:默认布局管理器是边界布局管理器 private JPanel p;// 声明一个面板对象,默认布局管理器是流...
  • javaGui--JFrame、布局管理器

    千次阅读 多人点赞 2018-10-05 07:49:35
    这个系列,我们介绍下java中的图形化组件——java GUI 开发。   java中开发gui程序需要使用的依赖包 java.awt.* 布局、字体等 ...java.awt.event.* 事件 (鼠标事件、键盘...本篇,我们介绍下javaGui中的布局 ...
  • Qt中的布局管理器

    千次阅读 2017-09-12 20:11:18
    在Qt中由QLayout衍生出若干个实现项目开发中常用的布局管理器子类:垂直/水平布局管理器QBoxLayout、网格布局管理器QGridLayout、表单布局管理器QFormLayout、栈式布局管理器QStackedLayout。   QObject类是...
  • 布局管布局管理器及事件处理代码
  • Java BoxLayout(盒子布局)布局管理器

    千次阅读 2021-01-31 17:50:01
    为了简化开发,Swing 引入了 一个新的布局管理器 : BoxLayout 。 BoxLayout 可以在垂直和 水平两个方向上摆放 GUI 组件, BoxLayout 提供了如下一个简单的构造器: 方法名称 方法功能 BoxLayout(Container ...
  • Java布局管理器组件

    千次阅读 多人点赞 2016-05-09 19:25:26
    Java布局管理器组件所谓布局管理器,就是为容器内的组件提供若干布局策略,每个容器都拥有某种默认布局管理器,用于负责其内部组件的排列。目前开发中,常用的布局管理器有BorderKayout、FlowLayout、GridLayout、...
  • 可以帮助Java学习者深入了解边界布局管理器
  • Qt 之布局管理器

    万次阅读 多人点赞 2016-05-27 17:43:45
    所有QWidget子类可以使用布局管理他们的子控件。QWidget::setLayout()函数可以为一个控件布局。当通过这种方式布局以后,它负责以下任务: 布置子控件。 最高层窗口可感知的默认大小。 最高层窗口可感知的最小大小...
  • BorderLayout布局 管理器布局示意图如图所示 。 当改变使用 BorderLayout 的容器大小时, NORTH 、 SOUTH 和 CENTER区域水平调整,而 EAST 、 WEST 和 CENTER 区域垂直调整。使用BorderLayout 有如下两个注意点:...
  • Java布局管理器之插件(一)---JPanel

    千次阅读 2019-10-31 14:15:43
    在图形用户界面编程中, 如果只是普通的组件布局, 我们用前面讲的三种布局管理器就可以解决, 但在比较复杂的布局要求时,就需要使用布局管理器的组合使用。 面板组件 (JPanel) JPanel :面板组件,非顶层容器,...
  • 布局管理器示例代码,综合应用程序,布局管理器嵌套使用
  • java中的swing组件、主要三大布局管理器的应用

    万次阅读 多人点赞 2017-10-22 14:05:44
    2、种类:java共提供了五种布局管理器:流式布局管理器(FlowLayout)、边界布局管理器(BorderLayout)、网格布局管理器(GridLayout)、卡片布局管理器(CardLayout)、网格包布局管理器(GridBagLayout)。其中前三种是最...
  • 卡片布局与其他布局稍微有所不同,需要调用这个布局对象进行互动! * 步骤: * 1.设置主窗体为网格布局,上下分开,其实用边界布局也可以的! * 2.创建两个面板jpA,jpB * 3.一个放主窗体上面jpA...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 373,769
精华内容 149,507
关键字:

布局管理器

友情链接: djb_hunky_chunk.zip