06:练习
思路:
- frame 总布局GridLayout(2,1)
- 4个面板p1( new BorderLayout())、p2 (new GridLayout(2,1))、p3(new BorderLayout())、p4 (new GridLayout(2,2))、
p2添加到p1,p4添加到p3
- 把p1,p3添加到frame里面,设置一些常见属性(大小,背景颜色,初始坐标,可见性,窗口关闭监听事件)就ok
1 package com.gui.lesson1; 2 3 import java.awt.*; 4 5 public class Practice { 6 public static void main(String[] args) { 7 //总 Frame 8 Frame frame = new Frame(); 9 10 //大小 11 frame.setSize(400, 300); 12 //初始位置 13 frame.setLocation(300, 400); 14 //背景颜色 15 frame.setBackground(Color.BLACK); 16 //显示出来 17 frame.setVisible(true); 18 19 frame.setLayout(new GridLayout(2, 1)); 20 21 //4个面板 22 Panel p1 = new Panel(new BorderLayout()); 23 Panel p2 = new Panel(new GridLayout(2, 1)); 24 Panel p3 = new Panel(new BorderLayout()); 25 Panel p4 = new Panel(new GridLayout(2, 2)); 26 27 //上面ok 28 p1.add(new Button("East-1"), BorderLayout.EAST); 29 p1.add(new Button("West-1"), BorderLayout.WEST); 30 p2.add(new Button("p2-btn-1")); 31 p2.add(new Button("p2-btn-2")); 32 p1.add(p2, BorderLayout.CENTER); 33 34 //下面ok 35 p3.add(new Button("East-2"), BorderLayout.EAST); 36 p3.add(new Button("West-2"), BorderLayout.WEST); 37 for (int i = 0; i < 4; i++) { 38 p4.add(new Button("p4-btn-" + i)); 39 } 40 p3.add(p4, BorderLayout.CENTER); 41 42 //把p1/p3放进总窗口里面 43 frame.add(p1); 44 frame.add(p3); 45 46 frame.addWindowListener(new WindowAdapter() { 47 @Override 48 public void windowClosing(WindowEvent e) { 49 System.exit(0); 50 } 51 }); 52 } 53 }
总结:
- Frame是一个顶级窗口
- Panel无法单独显示,必须添加到某个容器中
- 布局管理器:流式FlowLayout、东西南北中BorderLayout、表格GridLayout
- 大小、定位、背景颜色、可见性、监听