11day
leetcode
GUI编程
组件
-
窗口
-
弹窗
-
面板
-
文本框
-
按钮
-
图片
-
监听事件
-
鼠标
-
键盘事件
-
外挂:java
-
破解工具
1、简介
-
Gui的核心技术:Swing AWT,了解MVC架构,了解监听
-
AWT介绍:包含了许多类和接口;
-
元素:窗口,按钮,
2、组件和容器
import java.awt.*;
//gui第一个界面
public class TestFrame {
public static void main(String[] args) {
//frame
Frame frame = new Frame("我的第一个Java图形界面窗口");
//需要设置可见性
frame.setVisible(true);
//设置窗口大小
frame.setSize(400,400);
//设置背景颜色
frame.setBackground(new Color(102, 56, 56));
//弹出的初始位置
frame.setLocation(200,200);
//设置大小固定
frame.setResizable(false);
}
}
import java.awt.*;
public class TestFrame2 {
public static void main(String[] args) {
//展示多个窗口
MyFrame myFrame1 = new MyFrame(100, 100, 200, 200, Color.red);
MyFrame myFrame2 = new MyFrame(300, 100, 200, 200, Color.blue);
MyFrame myFrame3 = new MyFrame(100, 300, 200, 200, Color.green);
MyFrame myFrame4 = new MyFrame(300, 300, 200, 200, Color.gray);
}
}
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);
}
}
3、Panel面板
解决了关闭事件!
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
//不能单独存在 可以看成是一个空间
public class TestPanel {
public static void main(String[] args) {
Frame frame = new Frame();
//布局
Panel panel = new Panel();
//设置布局
frame.setLayout(null);
//坐标
frame.setBounds(300,500,500,500);
frame.setBackground(new Color(142, 24, 24));
//panel设置坐标,相对于frame
panel.setBounds(50,50,400,400);
panel.setBackground(new Color(212, 34, 182));
//frame.add()
frame.add(panel);
frame.setVisible(true);
//监听窗口关闭事件
frame.addWindowListener(new WindowAdapter() {
//窗口点击关闭时需要做的事情
布局管理器
-
流式布局
package com.wang.lesson01;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestFlowLayout {
public static void main(String[] args) {
Frame frame = new Frame();
//按钮组件
Button button1 = new Button("按钮1");
Button button2 = new Button("按钮2");
Button button3 = new Button("按钮3");
//设置为流式布局
//frame.setLayout(new FlowLayout());
frame.setLayout(new FlowLayout(FlowLayout.LEFT));
frame.setSize(200,200);
//添加按钮
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
//窗口点击关闭时需要做的事情
-
东西南北中
package com.wang.lesson01;
import java.awt.*;
public class TestBorderLayout {
public static void main(String[] args) {
Frame frame = new Frame("TestBorderLayout");
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.setVisible(true);
frame.setSize(200,200);
}
} -
表格布局
import java.awt.*;
public class TestGridLayout {
public static void main(String[] args) {
Frame frame = new Frame("TestGridLayout");
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.setLayout(new GridLayout(3,2));
frame.add(btn1);
frame.add(btn2);
frame.add(btn3);
frame.add(btn4);
frame.add(btn5);
frame.add(btn6);
frame.pack();
frame.setVisible(true);
}
}
测试
package com.wang.lesson01;
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class MyText {
public static void main(String[] args) {
//布局 上下两层
Frame frame = new Frame();
frame.setVisible(true);
frame.setSize(500,500);
frame.setLocation(200,200);
frame.setBackground(new Color(135, 66, 66));
frame.setLayout(new GridLayout(2,1));
//4个面板
Panel panel1 = new Panel(new BorderLayout());
Panel panel2 = new Panel(new GridLayout(2,1));
Panel panel3 = new Panel(new BorderLayout());
Panel panel4 = new Panel(new GridLayout(2,2));
//按钮上面
panel1.add(new Button("West-1"),BorderLayout.WEST);
panel1.add(new Button("East-1"),BorderLayout.EAST);
panel2.add(new Button("p2-btn-1"));
panel2.add(new Button("p2-btn-2"));
panel1.add(panel2,BorderLayout.CENTER);
//下面
panel3.add(new Button("West-2"),BorderLayout.WEST);
panel3.add(new Button("East-2"),BorderLayout.EAST);
for (int i = 0; i < 4; i++) {
panel4.add(new Button("for"+i));
}
panel3.add(panel4,BorderLayout.CENTER);
frame.add(panel1);
frame.add(panel3);
frame.addWindowListener(new WindowAdapter() {
//窗口点击关闭时需要做的事情
总结
-
Frame是一个顶级窗口
-
panel无法单独显示,必须放在某个容器中
-
布局管理器1. 2. 3.
-

浙公网安备 33010602011771号