📄 day09.txt
字号:
CoreJava(day09) 2007-12-13 --- 李艳
布局管理器的另两种:
CardLayout: (课堂代码:TestCardLayout.java)
卡片布局,组件重叠放置。
它将容器中的每个组件看作一张卡片。一次只能看到一张卡片
当容器第一次显示时,第一个添加到 CardLayout 对象的组件为可见组件。
public void first(Container parent)翻转到容器的第一张卡片。
public void next(Container parent)翻转到指定容器的下一张卡片。如果当前的可见卡片是最后一个,则此方法翻转到布局的第一张卡片。
public void previous(Container parent)翻转到指定容器的前一张卡片。如果当前的可见卡片是第一个,则此方法翻转到布局的最后一张卡片。
public void last(Container parent)翻转到容器的最后一张卡片。
public void show(Container parent,String name)翻转到已添加到此布局的具有指定 name 的组件。如果不存在这样的组件,则不发生任何操作。
GridBagLayout: (课堂代码:TestGridBag.java)
GridBagLayout 类是一个灵活的布局管理器。相当于董事长,不是实质性的管理。
GridBagConstraints 相当于总经理,是实质性的管理者。
每个由 GridBagLayout 管理的组件都与 GridBagConstraints 的实例相关联。
组件可以跨行跨列的网格布局。
定位:
public int gridx 水平位置。组件显示区域的开始边指的是水平、从左到右容器的左边缘和水平、从右到左容器的右边缘。
public int gridy 垂直位置。指定位于组件显示区域的顶部的单元格,其中最上边的单元格为 gridy=0。
行列操作:
public int gridwidth行。指定在组件显示区域的一行中的单元格数。
public int gridheight列。指定在组件显示区域的一列中的单元格数。
GridBagConstraints.REMAINDER 换行
设置如何改变组件大小:
GridBagConstraints.NONE不扩充
GridBagConstraints.HORIZONTAL水平扩展
GridBagConstraints.VERTICAL 垂直扩展
GridBagConstraints.BOTH 完全扩充
接口标识着布局管理器。LayoutManager是所有布局管理器都实现的接口。LayoutManager2比LayoutManager增加了些东西,即是加强版。
菜单: (课堂代码:TestMenu.java)
awt:
MenuBar
public JMenu add(JMenu c)将指定的菜单追加到菜单栏的末尾。
Menu
JMenu(String s) 构造一个新 JMenu,用提供的字符串作为其文本。
public JMenuItem add(JMenuItem menuItem)将某个菜单项追加到此菜单的末尾。返回添加的菜单项。
MenuItem
public JMenuItem()创建不带有设置文本或图标的 JMenuItem
public JMenuItem(String text)创建带有指定文本的 JMenuItem。
AWT事件模型(AWT,Swing的后台)(课堂代码:TestButtonEvent.java)
构造图形界面的步骤
1、选择一个容器 JFrame
2、设置容器的布局管理器
3、向容器添加组件
4、事件的监听
事件的三要素:
事件源:产生事件
事件对象:用来描述事件的 -----一个系列的类
事件的监听:用来处理事件的 -----一个系列的接口
事件源是事件的产生者,事件是一个事件的讲述者,事件监听者处理事件
比如单击按钮:按钮是事件,点击是事件,现在是找方法、找处理类。
观察者设计模式:
java.awt.Event 事件源
EventObject 事件对象
EventListener 事件监听者
JAVA的事件处理机制:委派式的(松耦合)
点击按钮---->组件自身会产生事件对象,但不一定负责处理,转而指派监听处理
java.awt.AWTEvent
ActionEvent(AWT事件王,所有按钮的单击,所有菜单的执行,文本框(单行)的回车,JList双击,JCheckbox)
AdjustmentEvent
ComponentEvent
ContainerEvent
FocusEvent(光标事件)
InputEvent
KeyEvent(键盘事件)
MouseEvent(鼠标事件)
WindowEvent窗口事件
ItemEvent
TextEvent(文本框、文件区域事件)
JTextArea,JTextField 这两个的文本改变不会产生TextEvent事件
事件 监听接口 处理方法
Action ActionListener actionPerformed(ActionEvent)
Window WindowListener WindowClosing(WindowEvent)
windowOpened(WindowEvent)
windowIconified(WindowEvent)
windowDeiconified(WindowEvent)
windowClosed(WindowEvent)
windowedActivated(WindowEvent)
windowDeactivated(WindowEvent)
AWT事件模型步骤
1、作界面:
选JFrame
选组件
选布局
2、写监听
实现接口
重写方法、实例变量
3、注册监听
addActionListener
jb1.addActionListener(this); //this在方法中代表的调用者,this在构造器中代表即将构造的对象。
常见问题:
1、API的查找:敢于尝试
2、当某一个变量需要在多个方法中使用时,可以把这个变量当做属性声明
java.awt.event.WindowListener: (课堂代码:TestWindowListener2.java)
7个方法需要重写,但只用1个
适配器:(课堂代码:TestWindowListener.java)
就是一个重写了所有监听接口中方法的类。
提供了适配器做监听的途径。
ActionListener就不需要适配器,因为它只有一个方法。
AWT中经常使用匿名内部类(继承适配器)做监听。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -