组件和容器

一、Frame

  1. package GUI;
  2. import java.awt.*;
  3. import java.awt.event.WindowAdapter;
  4. import java.awt.event.WindowEvent;
  5. /**
  6. * @Auther: 小雷学长
  7. * @Date: 2022/3/12 - 10:55
  8. * @Version: 1.8
  9. */
  10. public class TestFrame {
  11. public static void main(String[] args) {
  12. //新建一个窗口
  13. Frame frame = new Frame("管理系统");
  14. //需要设置可见性
  15. frame.setVisible(true);
  16. //设置窗口大小
  17. frame.setSize(400, 400);
  18. //设置背景颜色
  19. frame.setBackground(new Color(1, 55, 10));
  20. //弹出的初始位置
  21. frame.setLocation(200,200);
  22. //设置大小固定,无法改变大小
  23. frame.setResizable(true);
  24. frame.addWindowListener(new WindowAdapter() {
  25. @Override
  26. public void windowClosing(WindowEvent e) {
  27. System.exit(0);
  28. }
  29. });
  30. }
  31. }

2、组件和容器 - 图1

  1. package GUI;
  2. import java.awt.*;
  3. /**
  4. * @Auther: 小雷学长
  5. * @Date: 2022/3/12 - 11:08
  6. * @Version: 1.8
  7. */
  8. public class TestFrame2 {
  9. public static void main(String[] args) {
  10. //展示多个窗口
  11. new MyFrame(100,100,200,200,Color.GREEN);
  12. new MyFrame(300,100,200,200,Color.GREEN);
  13. new MyFrame(500,100,200,200,Color.GREEN);
  14. new MyFrame(700,100,200,200,Color.GREEN);
  15. }
  16. }
  17. class MyFrame extends Frame {
  18. //可能存在多个窗口,需要一个计数器
  19. static int id = 0;
  20. public MyFrame(int x, int y,int w,int h,Color color) {
  21. super("MyFrame"+(++id));
  22. setBounds(x,y,w,h);
  23. setVisible(true);
  24. setBackground(color);
  25. }
  26. }

2、组件和容器 - 图2

二、面板Panel

panel不能单独存在,可以看成是一个空间,需要放在Frame上

  1. package GUI;
  2. import java.awt.*;
  3. import java.awt.event.WindowAdapter;
  4. import java.awt.event.WindowEvent;
  5. import java.awt.event.WindowListener;
  6. /**
  7. * @Auther: 小雷学长
  8. * @Date: 2022/3/12 - 11:37
  9. * @Version: 1.8
  10. */
  11. public class TestPanel {
  12. public static void main(String[] args) {
  13. Frame frame = new Frame();
  14. //布局的概念
  15. Panel panel = new Panel();
  16. //需要设置可见性
  17. frame.setVisible(true);
  18. //设置布局
  19. frame.setLayout(null);
  20. //坐标
  21. frame.setBounds(300,300,400,400);
  22. frame.setBackground(new Color(193,3,4));
  23. //panel设置坐标,相对于frame
  24. panel.setBounds(30,40,400,500);
  25. panel.setBackground(new Color(40,61,35));
  26. //frame.add(panel)
  27. frame.add(panel);
  28. //监听事件,监听窗口关闭事件,system.exit(0)
  29. /* frame.addWindowListener(new WindowListener() {
  30. @Override
  31. public void windowOpened(WindowEvent e) {
  32. }
  33. @Override
  34. public void windowClosing(WindowEvent e) {
  35. }
  36. @Override
  37. public void windowClosed(WindowEvent e) {
  38. }
  39. @Override
  40. public void windowIconified(WindowEvent e) {
  41. }
  42. @Override
  43. public void windowDeiconified(WindowEvent e) {
  44. }
  45. @Override
  46. public void windowActivated(WindowEvent e) {
  47. }
  48. @Override
  49. public void windowDeactivated(WindowEvent e) {
  50. }
  51. });*/
  52. //监听事件,监听窗口关闭事件,system.exit(0)
  53. //适配器模式
  54. frame.addWindowListener(new WindowAdapter() {
  55. //窗口点击关闭时要做的事情
  56. @Override
  57. public void windowClosing(WindowEvent e) {
  58. System.exit(0);
  59. }
  60. });
  61. }
  62. }

2、组件和容器 - 图3