GUI知识总结,包含贪吃蛇小游戏
一、介绍
(一)简单介绍
Gui的核心技术:Swing 和 AWT 1.因为界面不美观。
为什么我们要学习? 1.可以写出自己心中想要的一些小工具 2.工作时候,也可能需要维护到swing界面,概率极小! 3.了解MVC架构,了解监听!
(二)AWT
(抽象的窗口工具)
包含了很多类和接口,GUI:图形用户界面
2.1 组件和容器
(1)frame
第一个java图像界面窗口:
package com.Yaof.Demo1;
import java.awt.*;
public class Demo01 {
public static void main(String[] args) {
Frame frame = new Frame("我的第一个java图像界面窗口");
//设置可见性
frame.setVisible(true);
//设置坐标
frame.setLocation(300,300);
//设置大小
frame.setSize(800,400);
//设置颜色
frame.setBackground(Color.pink);
//设置大小固定
frame.setResizable(true);
}
}
多个窗口:(存在问题)
package com.Yaof.Demo1;
import java.awt.*;
import java.util.Set;
public class Demo02 {
public static void main(String[] args) {
Demo001 demo001 = new Demo001(300,300,600,400,Color.red);
Demo001 demo002 = new Demo001(900,300,600,400,Color.orange);
Demo001 demo003 = new Demo001(300,700,600,400,Color.yellow);
Demo001 demo004 = new Demo001(900,700,600,400,Color.green);
}
}
class Demo001 extends Demo01 {
static int id = 0;//存在多个窗口,需要一个计数器
public Demo001(int x, int y, int w, int h, Color color) {
/* super("Frame+"+(++id));//此处有问题
setLocation(x,y);
setSize(w,h);
setBackground(color);*/
Frame frame = new Frame("Frame"+(++id));
frame.setBounds(x,y,w,h);//坐标大小
frame.setBackground(color);
frame.setVisible(true);
}
}
(2)面板panel
package com.Yaof.Demo1;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class PanelTest {
public static void main(String[] args) {
Frame frame = new Frame("背景");
Panel panel = new Panel();//新建面板
Panel panel1= new Panel();//再新建一个面板
//设置布局,默认置顶
frame.setLayout(null);
frame.setBounds(300,300,500,500);//设置坐标大小
frame.setBackground(new Color(94, 236, 17));
panel.setBounds(50,50,200,400);
panel.setBackground(new Color(239, 12, 12));
panel1.setBounds(250,50,200,400);
panel1.setBackground(new Color(25, 81, 224));
frame.add(panel);
frame.add(panel1);
frame.setVisible(true);
//监听事件,监听窗口关闭事件
//适配器模式:
frame.addWindowListener(new WindowAdapter() {
//点击窗口关闭时做的事情
(3)布局管理器
1.流式布局FlowLayout
package com.Yaof.Demo1;
import javax.swing.*;
import java.awt.*;
public class FlowLayoutTest {
//流式布局
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 FlowLayout(/*FlowLayout.CENTER*/));//center为默认
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.setVisible(true);
frame.setSize(200,200);
}
}
2、方向BorderLayout
package com.Yaof.Demo1;
import java.awt.*;
public class TestBorderLayout {
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.setVisible(true);
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(500,500);
}
}
3、表格布局GridLayout
package com.Yaof.Demo1;
import java.awt.*;
public class TestGridLayout {
public static void main(String[] args) {
Frame frame = new Frame();
Button btn1 = new Button("btn1");
Button btn2 = new Button("btn2");
Button btn3 = new Button("btn3");
Button btn4 = new Button("btn4");
Button btn5 = new Button("btn5");
Button btn6 = new Button("btn6");
frame.setVisible(true);
frame.add(btn1);
frame.add(btn2);
frame.add(btn3);
frame.add(btn4);
frame.add(btn5);
frame.add(btn6);
frame.setLayout(new GridLayout(2,3));
frame.setSize(300,300);
frame.pack();//较好的排列方法
}
}
练习:(待完善)
package com.Yaof.Demo1;
import java.awt.*;
public class Test {
public static void main(String[] args) {
Frame frame = new Frame();
Panel panel1 = new Panel(new GridLayout(1,1));
Panel panel2 = new Panel(new GridLayout(2,1));
Panel panel3 = new Panel(new GridLayout(1,1));
Panel panel4 = new Panel(new GridLayout(1,1));
Panel panel5 = new Panel(new GridLayout(2,2));
Panel panel6 = new Panel(new GridLayout(1,1));
Button btn1 = new Button("btn1");
Button btn2 = new Button("btn2");
Button btn3 = new Button("btn3");
Button btn4 = new Button("btn4");
Button btn5 = new Button("btn5");
Button btn6 = new Button("btn6");
Button btn7 = new Button("btn7");
Button btn8 = new Button("btn8");
Button btn9 = new Button("btn9");
Button btn10 = new Button("btn10");
Button btn01 = new Button("btn01");
Button btn02 = new Button("btn02");
Button btn03 = new Button("btn03");
frame.setVisible(true);
frame.setBounds(100,100,600,400);
panel1.setBounds(0,0,100,200);
panel2.setBounds(100,0,400,200);
panel3.setBounds(500,0,100,200);
panel4.setBounds(0,200,100,200);
panel5.setBounds(100,200,400,200);
panel6.setBounds(500,200,100,200);
frame.add(panel1);
