腾讯面试笔试题,GUI编程基础01AWT(了解,前端编程开发

| 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前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

最后

正值招聘旺季,很多小伙伴都询问我有没有前端方面的面试题!

前端资料图.PNG

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

阿里一直到现在。**

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《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)]

  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值