GUI 简介
1、概念:图形用户界面,是指采用图形方式显示的计算机操作用户界面
2、核心技术:Swing、AWT
3、优点
(1)可以写出我们心中想要的一些小工具
(2)工作时候,也许需要维护到 Swing 界面
(3)了解 MVC 架构,了解监听
AWT 介绍
1、Java 的包
2、awt包 含有多个类和接口,元素—窗口、按钮、文本框
Frame 窗口
1、、第一个GUI界面
import java.awt.*; public class OneFrame { public static void main(String[] args) { // 按下 Ctrl 点击类名可查看源代码 Frame frame = new Frame("我的第一个Java图像界面窗口"); // 需要设置可见性 -> 默认为 false frame.setVisible(true); // 设置窗口大小 frame.setSize(500,500); // 设置背景颜色 frame.setBackground(new Color(167, 100, 226)); // 设置弹出界面的初始位置 frame.setLocation(725,300); // 设置大小固定 -> 默认为 true frame.setResizable(false); } }
讯享网

缺陷:无法关闭,只能手动停止 Java 程序
2、多个GUI界面——利用封装继承
讯享网import java.awt.*; //展示多个窗口 new public class MoreFrames { public static void main(String[] args) { MyFrame myFrame1 = new MyFrame(100,100,200,200,Color.blue); MyFrame myFrame2 = new MyFrame(300,100,200,200,Color.yellow); MyFrame myFrame3 = new MyFrame(100,300,200,200,Color.red); MyFrame myFrame4 = new MyFrame(300,300,200,200,Color.MAGENTA); } } // 定义界面 class MyFrame extends Frame{ static int id = 0; public MyFrame(int x, int y, int w, int h, Color color){ //设置标题 super("MyFrame " + (++id)); //设置背景颜色 setBackground(color); //设置大小及位置 setBounds(x,y,w,h); //设置可见 setVisible(true); } }

Panel 面板
1、可看成一个空间,不可独立存在,需内嵌于 frame 中,且之后将文本等内容写在panel面板中
2、frame 与 panel
import java.awt.*; public class Penal { 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(188, 118, 255)); //panel相对坐标 panel.setBounds(50,50,400,400); //颜色 panel.setBackground(new Color(255, 131, 235)); //将二者结合 frame.add(panel); //设置可见 frame.setVisible(true); } }


2、监听事件:监听窗口关闭事件
讯享网//监听事件,监听窗口关闭事件 //适配器模式 frame.addWindowListener(new WindowAdapter(){ //窗口点击关闭的时候需要做的事情 @Override public void windowClosing(WindowEvent e) { // 结束程序 System.exit(0); } });
布局管理器
1、流式布局
import java.awt.*; //监听事件 import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class FlowLayout{ public static void main(String[] args) { Frame frame = new Frame(); //组件-按钮 Button button1 = new Button("button1"); Button button2 = new Button("button2"); Button button3 = new Button("button3"); //设置为流式布局 -> 默认居中 frame.setLayout(new java.awt.FlowLayout()); //设置大小 frame.setSize(500,500); //把按钮添加上去 frame.add(button1); frame.add(button2); frame.add(button3); //设置可见 frame.setVisible(true); //监听事件,监听窗口关闭事件 //适配器模式 frame.addWindowListener(new WindowAdapter(){ //窗口点击关闭的时候需要做的事情 @Override public void windowClosing(WindowEvent e) { // 结束程序 System.exit(0); } }); } }

2、东西南北中
讯享网import java.awt.*; public class BorderLayout { public static void main(String[] args) { Frame frame = new Frame("BorderLayout"); 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, java.awt.BorderLayout.EAST); frame.add(west, java.awt.BorderLayout.WEST); frame.add(south, java.awt.BorderLayout.SOUTH); frame.add(north, java.awt.BorderLayout.NORTH); frame.add(center, java.awt.BorderLayout.CENTER); frame.setSize(400,400); frame.setVisible(true); } }

3、表格布局
import java.awt.*; public class GridLayout { public static void main(String[] args) { Frame frame = new Frame(); Button button1 = new Button("button1"); Button button2 = new Button("button2"); Button button3 = new Button("button3"); Button button4 = new Button("button4"); Button button5 = new Button("button5"); Button button6 = new Button("button6"); //设置表格大小 frame.setLayout(new java.awt.GridLayout(3,2)); //添加到frame中 frame.add(button1); frame.add(button2); frame.add(button3); frame.add(button4); frame.add(button5); frame.add(button6); frame.pack(); //Java函数 ——》 自动布局 / 填充 frame.setVisible(true); } }

- 作业 写出下列布局:

讯享网import java.awt.*; import java.awt.BorderLayout; import java.awt.GridLayout; public class Homework { public static void main(String[] args) { // 总 Frame Frame frame = new Frame(); frame.setBounds(400,300,500,500); frame.setBackground(Color.MAGENTA); frame.setLayout(new GridLayout(2,1)); //整体分为上下两块 frame.setVisible(true); // 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,1)); //下面板的中部,再按表格分 //向上面板添加按钮 p1.add(new Button("East-1"), BorderLayout.EAST); p1.add(new Button("West-1"), BorderLayout.WEST); p2.add(new Button("grid-00")); p2.add(new Button("grid-10")); p1.add(p2,BorderLayout.CENTER); //向下面板添加按钮 p3.add(new Button("East-2"), BorderLayout.EAST); p3.add(new Button("West-2"), BorderLayout.WEST); p4.add(new Button("grid-00")); p4.add(new Button("grid-01")); p4.add(new Button("grid-10")); p4.add(new Button("grid-11")); p3.add(p4,BorderLayout.CENTER); //将上下面板放入frame中 frame.add(p1); frame.add(p3); } }

总 结
1、Frame是一个顶级窗口
2、Panel无法单独显示,必须添加到某个容器中
3、布局管理器:流式、东西南北中、表格
4、大小、定位、颜色背景、可见性、监听
5、写程序前先构思,先构思,先构思,再动手

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/129306.html