JavaDailyReports10_09
*****************************
1.2.2
布局管理器 BorderLayout
把容器的布局分为东西南北中五个部位,默认是中间,平铺占满!
1 package awt;
2
3 import java.awt.BorderLayout;
4 import java.awt.Button;
5 import java.awt.Frame;
6
7 public class TestBorderLayout {
8
9 public static void main(String[] args) {
10 // TODO 自动生成的方法存根
11 Frame f= new Frame("Border Layout!");
12 Button bn= new Button("BN");
13 Button bs = new Button("BS");
14 Button bw = new Button("BW");
15 Button be = new Button("BE");
16 Button bc = new Button("BC");
17 f.add(bn,BorderLayout.NORTH);
18 f.add(bs,BorderLayout.SOUTH);
19 f.add(bw,BorderLayout.WEST);
20 f.add(be,BorderLayout.EAST);
21 f.add(bc,BorderLayout.CENTER);
22 f.setBounds(200, 300, 300, 200);
23 f.setVisible(true);
24
25 }
26
27 }
Frame 的默认布局管理器就是BorderLayout
BorderLayout 可以添加容器组件和基本组件
有两个构造方法:① 不带参数 ② 带参数 设置水平垂直间距 BorderLayout ( int hgap,int vgap ); 默认间距是0;
*************************
1.2.3 GridLayout
矩阵网形式布局,网格控制布局,容器被分成大小相等的矩形,一个矩形中放一个组件。
1 package awt;
2
3 import java.awt.Button;
4 import java.awt.Frame;
5 import java.awt.GridLayout;
6
7 public class TestGridLayout {
8
9 public static void main(String[] args) {
10 // TODO 自动生成的方法存根
11 Frame f=new Frame("GridLayout Example");
12 Button b1= new Button("按键1");
13
14 Button b2=new Button("按键2");
15 Button b3 =new Button("按键3");
16 Button b4=new Button("按键4");
17 Button b5 =new Button("按键5");
18 Button b6 =new Button("按键6");
19 Button b7 =new Button("按键7");
20 f.setLayout(new GridLayout(3,3));
21 f.add(b1);
22 f.add(b2);
23 f.add(b3);
24 f.add(b4);
25 f.add(b4);
26 f.add(b5);
27 f.add(b6);
28 f.add(b7);
29 f.setSize(500,400);
30 f.setLocation(300,500);
31 f.setVisible(true);
32
33
34 }
35
36
37 }
*****************
1.3.1 事件处理
完成事件处理有三个重要的对象:事件源,监听器,事件对象。
不同的监听接口:
ActionListener : 按钮和菜单
WindowListener : 窗口
MouseListener : 鼠标
1 package awt;
2
3 import java.awt.Button;
4 import java.awt.Frame;
5 import java.awt.event.ActionEvent;
6 import java.awt.event.ActionListener;
7
8 public class TestActionEvent {
9
10 public static void main(String[] args) {
11 // TODO 自动生成的方法存根
12 Frame f= new Frame("TestActionEvent");
13 Button b1= new Button("b1");
14 Button b2=new Button("b2");
15 Monitor m=new Monitor();
16 b1.addActionListener(m);
17 b2.addActionListener(m);
18 b2.setActionCommand("Game over!");
19 f.add(b1,"North");
20 f.add(b2,"Center");
21 f.setLocation(500,500);
22 f.setSize(300,300);
23 f.pack();
24 f.setVisible(true);
25 f.setResizable(false);
26 }
27
28 }
29 class Monitor implements ActionListener{
30 public void actionPerformed(ActionEvent e) {
31 System.out.println("A button has been pressed");
32 System.out.println("The relative info is :"+e.getActionCommand());
33 }
34 Monitor (){};
35 }
/*
* 创建监听类实现监听接口
* 设置函数传入 事件处理 ActionListener e
*
* getActionCommand函数 传入文字显示结果
*
*
* 组件调用 addActionListener() 函数 把监听类的实例化对象 传入
*
* b1.addActionListener(m);
*/
*************************************
1.3.2 文本框的事件处理
文本框组件 TextField 在文本框中按回车键 也会触发ActionEvent 事件,用TextListener 接口的类监听 TextEvent 事件。
1 package awt;
2
3 import java.awt.Color;
4 import java.awt.Frame;
5 import java.awt.TextField;
6 import java.awt.event.ActionEvent;
7 import java.awt.event.ActionListener;
8 import java.awt.event.TextEvent;
9 import java.awt.event.TextListener;
10
11 public class TFActionEvent {
12
13 public static void main(String[] args) {
14 // TODO 自动生成的方法存根
15 new TextFeildFrame();
16 }
17
18 }
19 class TextFeildFrame extends Frame{
20 TextField tf;
21 public TextFeildFrame() {
22 tf=new TextField();
23 tf.addActionListener(new TFActionListener());
24 tf.addTextListener(new TFTextListener());
25 this.add(tf);
26 this.setBackground(Color.BLUE);
27 this.setBounds(300,300,300,300);
28 this.pack();
29 this.setVisible(true);
30 }
31
32
33
34 class TFTextListener implements TextListener{
35 public void textValueChanged(TextEvent e) {
36 System.out.println("Change:");
37 System.out.println(tf.getText());
38
39 }
40 }
41
42
43 class TFActionListener implements ActionListener{
44 public void actionPerformed(ActionEvent e) {
45 TextField tf= (TextField)e.getSource();
46 System.out.println("Enter pressed:"+tf.getText());
47 tf.setText("");
48
49 }
50 }
51 }
###############
在文本框中按回车也会触发ActionEvent 事件,还有就是文本框内容的改变也会触发。
TextListener接口只有一个方法 : textValueChanged() 参数是一个 TextEvent对象。
————————————————————————————————————————
1.4 适配器
1.4.1 窗口事件处理
AWT 中处理窗口的是 WindowEvent 要实现 WindowListener 接口
一共对应七个事件
1 package awt;
2
3 import java.awt.Frame;
4 import java.awt.event.WindowAdapter;
5 import java.awt.event.WindowEvent;
6
7 public class TestWindowAdapter {
8
9 public static void main(String[] args) {
10 // TODO 自动生成的方法存根
11 new MFrame();
12 }
13 }
14 @SuppressWarnings("serial")
15 class MFrame extends Frame{
16 MFrame(){
17 setBounds(300,300,400,300);
18 this.addWindowListener(new WindowMonitor());
19 setVisible(true);
20 }
21 class WindowMonitor extends WindowAdapter{
22 public void windowClosing(WindowEvent e) {
23 setVisible(false);
24 System.exit(0);
25 }
26 }
27 }
生成一个窗口可以关闭
WindowMonitor继承了WindowAdapter适配器,这样就不用实现接口的所有函数了。
JavaDailyReports10_09的更多相关文章
随机推荐
- windows中flask的环境搭建
之前在ctf中遇到了python模板注入的题,于是就打算学习一下flask框架,它是基于Python的Web轻量级应用框架,与其他框架相比,Flask可以自主选择应用组件,可扩展性强. 安装也简单 第 ...
- secret_key伪造session来进行越权
从swpuctf里面的一道ctf题目来讲解secret_key伪造session来进行越权. 以前没有遇到过这种题目,这次遇到了之后查了一些资料把它做了出来,记录一下知识点. 参考资料 http:// ...
- pandas LabelEncoder 测试集出现了训练集中未出现过的值怎么解决(y contains previously unseen labels 解决方法)
for i in categorical_ix: le = joblib.load(f"./LabelEncoder/{i}_LabelEncoder.model") #由于tes ...
- Day7 【Scrum 冲刺博客】
每日会议总结 昨天已完成的工作 方晓莹(PIPIYIng) 对接车位管理接口 处理对接接口遇到的bug和错误 方子茵(Laa-L) 暂无 黄芯悦(Sheaxx) 完成住户车位查询页面 完成住户物业报修 ...
- 题解 洛谷 P5279 【[ZJOI2019]麻将】
这题非常的神啊...蒟蒻来写一篇题解. Solution 首先考虑如何判定一副牌是否是 "胡" 的. 不要想着统计个几个值 \(O(1)\) 算,可以考虑复杂度大一点的. 首先先把 ...
- 题解-洛谷P4859 已经没有什么好害怕的了
洛谷P4859 已经没有什么好害怕的了 给定 \(n\) 和 \(k\),\(n\) 个糖果能量 \(a_i\) 和 \(n\) 个药片能量 \(b_i\),每个 \(a_i\) 和 \(b_i\) ...
- Java集合源码分析(二)——ArrayList
简介 ArrayList 是一个数组列表,相当于 动态数组.与Java中的数组相比,它的容量能动态增长.它继承于AbstractList,实现了List, RandomAccess, Cloneabl ...
- 基于gin的golang web开发:实现用户登录
前文分别介绍过了Resty和gin-jwt两个包,Resty是一个HTTP和REST客户端,gin-jwt是一个实现了JWT的Gin中间件.本文将使用这两个包来实现一个简单的用户登录功能. 环境准备 ...
- Chrome中Console使用技巧
1.使用Jquery 先在控制台执行一下 ;(function(d,s){d.body.appendChild(s=d.createElement('script')).src='https://cd ...
- logstash导入DNS解析数据到es中,中间有filebeat
这个过程中,主要用logstash处理数据的时候不好处理. 在logstash-sample.conf这个配置文件中的配置,我用这个监控filebeat的5044端口 # Sample Logstas ...