复习JavaDay08

发布时间 2023-05-28 22:18:56作者: 再叙旧

GUI编程简介

Gui的核心技术:SwingAWT 1.因为界面不美观 2.需要jre环境! 为什么我们要学习? 1.可以写出自己心中想要的一些小工具 2.工作时候,也可能需要维护到swing界面,概率极小!3.了解MVC架构,了解监听!

第一个Frame窗口

public static void main(String[] args) {
  //创建一个图形化对象,设置标题
  Frame frame = new Frame("我的第一个Java图像界面窗口");

  //设置可见性
  frame.setVisible(true);

  //设置窗口大小
  frame.setSize(400, 400);

  //设置背景颜色,参数为Color对象
  frame.setBackground(new Color(78, 102, 119));

  //弹出的初始位置
  frame.setLocation(750, 300);

  //设置窗口大小固定:false为不可调节大小
  frame.setResizable(false);
}

Prnel布局面板

prnel是存在于窗口当中,窗口的最大部分为背景,类似于管理系统中除了上边栏和侧边栏之外的显示部分。

public static void main(String[] args) {
  //创建一个图形化对象,设置标题
  Frame frame = new Frame("       " + "贪吃蛇");
  //布局
  Panel panel = new Panel();

  //设置布局
  frame.setLayout(null);

  //设置窗口大小和初始坐标和和背景颜色
  frame.setBounds(300, 300, 500, 500);
  frame.setBackground(new Color(182, 155, 67));

  //设置布局大小和背景颜色
  panel.setBounds(50, 0, 450, 500);
  panel.setBackground(new Color(45, 175, 128));

  //布局对象加入窗口中
  frame.add(panel);

  //设置窗口大小固定:false为不可调节大小
  frame.setResizable(false);

  //设置窗口可见
  frame.setVisible(true);

  frame.addWindowListener(new WindowAdapter() {
      //窗口点击关闭时需要做的事情
      @Override
      public void windowClosing(WindowEvent e) {
          super.windowClosing(e);
          System.exit(0);
      }
  });
}

布局管理器

流式布局:布局的东西都居中

 public static void main(String[] args) {
      Frame frame = new Frame();

      Button button1 = new Button("bt1");
      Button button2 = new Button("bt2");
      Button button3 = new Button("bt3");

      //设置流式布局
      frame.setLayout(new FlowLayout());
      frame.setSize(400,400);

      frame.add(button1);
      frame.add(button2);
      frame.add(button3);

      //设置窗口可见
      frame.setVisible(true);
  }
}

东西南北中布局

  //东西南北中布局
  public static void main(String[] args) {
      Frame frame = new Frame();

      Button east = new Button("East");
      Button west = new Button("West");
      Button south = new Button("South");
      Button north = new Button("North");
      Button center = new Button("Center");

      frame.add(east, BorderLayout.EAST);
      frame.add(west, BorderLayout.WEST);
      frame.add(south, BorderLayout.SOUTH);
      frame.add(north, BorderLayout.NORTH);
      frame.add(center, BorderLayout.CENTER);

      frame.setSize(400, 400);
      frame.setVisible(true);
  }
}

表格布局

 //表格布局
  public static void main(String[] args) {
      Frame frame = new Frame();

      Button but1 = new Button("but1");
      Button but2 = new Button("but2");
      Button but3 = new Button("but3");
      Button but4 = new Button("but4");
      Button but5 = new Button("but5");
      Button but6 = new Button("but6");

      frame.setLayout(new GridLayout(3,2));

      frame.add(but1);
      frame.add(but2);
      frame.add(but3);
      frame.add(but4);
      frame.add(but5);
      frame.add(but6);

      frame.pack();
      frame.setSize(400, 400);
      frame.setVisible(true);
  }
}

布局嵌套

//布局嵌套
public static void main(String[] args) {
  Frame frame = new Frame();
  //总大小
  frame.setSize(400, 300);
  //弹出的初始位置
  frame.setLocation(300, 400);
  //背景颜色
  frame.setBackground(Color.BLACK);
  //可见性
  frame.setVisible(true);
  //设置表格布局
  frame.setLayout(new GridLayout(2, 1));

  //4个面板
  Panel p1 = new Panel(new BorderLayout());
  Panel p2 = new Panel(new GridLayout(2, 1));
  Panel p3 = new Panel(new BorderLayout());
  Panel p4 = new Panel(new GridLayout(2, 2));

  //上面
  p1.add(new Button("East-1"), BorderLayout.EAST);
  p1.add(new Button("West-1"), BorderLayout.WEST);
  p2.add(new Button("p2-but-1"));
  p2.add(new Button("p2-but-2"));
  p1.add(p2,BorderLayout.CENTER);

  //下面
  p3.add(new Button("East-2"), BorderLayout.EAST);
  p3.add(new Button("West-2"), BorderLayout.WEST);

  //中间四个
  for (int i = 0; i < 4; i++) {
      p4.add(new Button("for-" + i));
  }
  p3.add(p4, BorderLayout.CENTER);
  frame.add(p1);
  frame.add(p3);
}

点击事件及关闭监听

class ClickEvent {
  //布局嵌套
  public static void main(String[] args) {
      Frame frame = new Frame();
      Button button = new Button();

      //因为监听器需要实现ActionListener,所以创建了MyActionListener类
      MyActionListener myActionListener = new MyActionListener();
      button.addActionListener(myActionListener);

      //布局设置居中
      frame.add(button, BorderLayout.CENTER);
      frame.pack();

      //调用关闭方法
      windowClose(frame);
      //可见度
      frame.setVisible(true);
  }

  //点击关闭事件
  public static void windowClose(Frame frame) {
      frame.addWindowListener(new WindowAdapter() {
          @Override
          public void windowClosing(WindowEvent e) {
              super.windowClosing(e);
              System.out.println("点击了关闭窗口");
              System.exit(0);
          }
      });
  }
}

//点击事件
class MyActionListener implements ActionListener {
  public void actionPerformed(ActionEvent e) {
      System.out.println("aaa");
  }
}

多个按钮设置一个监听

class ClickEvent {
  //布局嵌套
  public static void main(String[] args) {
      Frame frame = new Frame("开始-停止");
      Button button1 = new Button("statr");
      Button button2 = new Button("stop");

      //多个按键设置一个监听
      button2.setActionCommand("button2-stop");

      //因为监听器需要实现ActionListener,所以创建了MyActionListener类
      MyMonitor myMonitor = new MyMonitor();

      button1.addActionListener(myMonitor);
      button2.addActionListener(myMonitor);

      //布局设置居中
      frame.add(button1, BorderLayout.NORTH);
      frame.add(button2, BorderLayout.SOUTH);

      frame.pack();
      //可见度
      frame.setVisible(true);
      //调用关闭方法
      windowClose(frame);
  }

  //点击关闭事件
  public static void windowClose(Frame frame) {
      frame.addWindowListener(new WindowAdapter() {
          @Override
          public void windowClosing(WindowEvent e) {
              super.windowClosing(e);
              System.out.println("点击了关闭窗口");
              System.exit(0);
          }
      });
  }
}

//点击事件
class MyMonitor implements ActionListener {
  public void actionPerformed(ActionEvent e) {
      System.out.println("按键被点击了:" + e.getActionCommand());
      if (e.getActionCommand().equals("statr")) {
          System.out.println("小明");
      }else {
          System.out.println("小红");
      }
  }
}