| Frame(String a) | 构造方法 | 创建一个窗体对象,并指定标题 |
| setSize(int width,int height) | 普通方法 | 设置窗体大小 |
| setBackgorund(color.red) | 普通方法 | 设置窗体背景颜色 |
| setLocation(int x,int y) | 普通方法 | 设置组件的显示位置 |
| setLocation(point p) | 普通方法 | 通过point来设置组件的显示位置 |
| setVisible(true/false) | 普通方法 | 显示或隐藏组件 |
| add(Component comp) | 普通方法 | 向容器中增加组件 |
| setLayout(LayoutManager mgr) | 普通方法 | 设置局部管理器,如果设置为null表示不使用 |
| pack() | 普通方法 | 调整窗口大小,以适合其子组件的首选大小和局部 |
| getContentpane() | 普通方法 | 返回此窗口的容器对象 |
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(231, 78, 231));
//弹出的初始位置
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.blue);
MyFrame myFrame2 = new MyFrame(300, 100, 200, 200, Color.yellow);
MyFrame myFrame3 = new MyFrame(100, 300, 200, 200, Color.pink);
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面板讲解
面板,可以看成是一个空间,但是不能单独存在。
import java.awt.*;
//面板 可以看成是一个空间 但是不能单独存在
public class TestPanel {
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(40,161,35));
//Panel设置坐标,相对于frame
panel.setBounds(50,50,400,400);
panel.setBackground(new Color(193,15,60));
//frame.add(panel)
frame.add(panel);
frame.setVisible(true);
}
}
若要关闭窗口则需设置监听事件
//监听事件,监听窗口关闭事件
frame.addWindowListener(new WindowListener() {
@Override
public void windowOpened(WindowEvent e) {
}
@Override
public void windowClosing(WindowEvent e) {
}
@Override
public void windowClosed(WindowEvent e) {
}
@Override
public void windowIconified(WindowEvent e) {
}
@Override
public void windowDeiconified(WindowEvent e) {
}
@Override
public void windowActivated(WindowEvent e) {
}
@Override
public void windowDeactivated(WindowEvent e) {
}
});
然而这里重写的方法过多,可采用适配器模式:
在windowClosing()方法中重写窗口点击关闭时要做的事情:
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
//面板 可以看成是一个空间 但是不能单独存在
public class TestPanel {
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(40,161,35));
//Panel设置坐标,相对于frame
panel.setBounds(50,50,400,400);
panel.setBackground(new Color(193,15,60));
//frame.add(panel)
frame.add(panel);
frame.setVisible(true);
//监听事件,监听窗口关闭事件
frame.addWindowListener(new WindowAdapter() {
//窗口点击关闭时要做的事情
@Override
public void windowClosing(WindowEvent e) {
//结束程序
System.exit(0);
}
});
}
}
如此一来,点击窗口关闭按钮就可以正常结束了。
三种布局管理器
流式布局
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(“button1”);
Button button2 = new Button(“button1”);
Button button3 = new Button(“button1”);
//设置为流式布局
frame.setLayout(new FlowLayout());
frame.setSize(200,200);
//把按钮添加上去
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);
}
});
}
}
其中,流式布局默认居中:
将frame.setLayout(new FlowLayout());
改为frame.setLayout(new FlowLayout(FlowLayout.LEFT));
可设置为居左:
东西南北中
其布局为:
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
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.setSize(200,200);
frame.setVisible(true);
//监听事件,监听窗口关闭事件
frame.addWindowListener(new WindowAdapter() {
//窗口点击关闭时要做的事情
@Override
public void windowClosing(WindowEvent e) {
//结束程序
System.exit(0);
}
});
}
}
表格布局
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
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);
//监听事件,监听窗口关闭事件
frame.addWindowListener(new WindowAdapter() {
//窗口点击关闭时要做的事情
@Override
public void windowClosing(WindowEvent e) {
//结束程序
System.exit(0);
}
});
}
}
练习
思路:
1、frame窗口
2、4个面板
border
左:button
中:面板
右:button
实现:
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class ExDemo {
public static void main(String[] args) {
Frame frame = new Frame();
frame.setSize(400,300);
frame.setLocation(300,300);
frame.setBackground(Color.black);
frame.setVisible(true);
frame.setLayout(new GridLayout(2,1));//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(“East1”),BorderLayout.EAST);
p1.add(new Button(“Wast1”),BorderLayout.WEST);
p2.add(new Button(“p2-btn-1”));
p2.add(new Button(“p2-btn-2”));
p1.add(p2,BorderLayout.CENTER);
p3.add(new Button(“East2”),BorderLayout.EAST);
p3.add(new Button(“Wast2”),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);
//监听事件,监听窗口关闭事件
frame.addWindowListener(new WindowAdapter() {
//窗口点击关闭时要做的事情
@Override
public void windowClosing(WindowEvent e) {
//结束程序
System.exit(0);
}
});
}
}
总结:
- Frame是一个顶级窗口
- Panel无法单独显示,必须添加到某个容器中
- 布局管理器:
流式布局
东西南北中布局
表格布局
- frame的各种属性
事件监听
事件监听:当某个事件发生时,该干什么?
写一个简单的监听事件:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestActionEvent {
public static void main(String[] args) {
//按下按钮时,触发一些事件
Frame frame = new Frame();
Button button = new Button();
//因为addActionListener()需要一个ActionListener,所以我们需要构造一个ActionListener
MyActionListener myActionListener = new MyActionListener();
button.addActionListener(myActionListener);
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
最后
正值招聘旺季,很多小伙伴都询问我有没有前端方面的面试题!
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
阿里一直到现在。**
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-i29EvthL-1712571236798)]
[外链图片转存中…(img-IGceKYCJ-1712571236799)]
[外链图片转存中…(img-rpmjzL75-1712571236799)]
[外链图片转存中…(img-ECO2Bdzz-1712571236800)]
[外链图片转存中…(img-MkgzXlbg-1712571236800)]
[外链图片转存中…(img-pr7YWaoC-1712571236800)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-noSDZ0gh-1712571236801)]
最后
正值招聘旺季,很多小伙伴都询问我有没有前端方面的面试题!
[外链图片转存中…(img-3ev2n15S-1712571236801)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-s4DLKJE0-1712571236801)]