组件及事件处理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
演示例题
大外软件-徐
布局管理器练习
大外软件-徐
CardLayout
• 布局特点:使用CardLayout的容器可以容纳多个组件 ,但是实际上同一时刻容器只能从这些组件中选出一个 来显示,就像一叠“扑克牌”每次只能显示最上面一张 一样,这个被显示的组件将占据所有的容器空间。 • 四个步骤:
– – – – 创建布局对象:CardLayout() 容器设置布局:容器.setLayout() 容器添加组件:容器.add() 显示添加的组件:布局.show()
一般方法 isSelected()
大外软件-徐
大外软件学院(徐)
JRadioButton
• 构造方法 – JRadioButton(String s) • 一般方法
– setSelected() – isSelected()
大外软件-徐
大外软件学院(徐)
JPasswordField
• 构造方法
– JPasswordField()
大外软件-徐
JScrollPane
• 滚动面板,通常与JTextarea
大外软件-徐
Jpanel练习
大外软件-徐
布局管理器
大外软件学院(徐)
FlowLayout
• 将组件逐行排列,一行满后换到下一行 • 不改变组件的大小 • 默认对齐方式是居中
大外软件-徐
FlowLayout布局
• 为使用FlowLayout布局的容器中的组件重新设置默 认的大小: – 布局对象.setPreferredSize(new Dimension(20,20)); • 重新设置布局的对齐方式: – 布局对象.setAlignment(int aligin); • 重新设置水平间隙和垂直间隙: – setHgap (int hgap); – setVgap (int vgap);
– public void insertUpdate(DocumentEvent e)
大外软件-徐
DocumentEvent
• 一个监听器处理多个事件
大外软件-徐
DocumentEvent练习
1.单词排序 2.右侧文本区不可编辑
大外软件-徐
大外软件学院(徐)
事件处理练习
• 设计一个窗口,该窗 口有3个文本框,在 第一个文本框内输入 一个数字按回车后, 在第二个文本框内显 示该数字的平方,在 第三个文本框内显示 该数字的立方。
ActionEvent
• 触发时机:
– 文本框获得输入焦点后按回车 – 单击按纽 – 选中某个菜单项 – 选择某个单选按纽
• 监视器ActionListener接口
– void actionPerformed(ActinEvent e) • ActionEvent类中的方法 :
– public Object getSource() :获取事件源 – public String getActionCommand():获取命令串
大外软件-徐
JFrame
大外软件-徐
JFrame
• 更常用的方式
大外软件-徐
大外软件学院(徐)
JTextField
• 构造方法 – JTextField() – JTextField(int x) – JTextField(String s ) • 一般方法 – public void setText(String s) – public String getText()
大外软件-徐
GridLayout
大外软件-徐
GridLayout练习
大外软件-徐
null布局
• 可以通过setBounds(int a,int b,int width,int height)方法精确定位组件位置。 • 空布局容器中添加组件方法:
– add(c)添加组件 – 组件c调用setBounds方法
– 创建布局对象:GridLayout(int m,int n) – 设置布局:setLayerout(GridLayout grid) – 容器添加组件:add()
• GridLayout布局的缺点:
– 由于GridLayout布局中每个网格都是相同大小并且强制组 件与网格的大小相同,使得容器中的每个组件也都是相同 的大小,显得很不自然。 – 解决方法:可以使用容器嵌套。
大外软件-徐
百度文库
大外软件学院(徐)
BorderLayout
• 将容器划分为东 (EAST)、西(WEST)、 南(SOUTH)、北 (NORTH)、中 (CENTER)五个区域 • 如果不指定组件加入的 位置,默认放到 CENTER • 在一个区域加入多个组 件时会覆盖以前的
大外软件-徐
大外软件学院(徐)
大外软件-徐
事件处理
大外软件学院(徐)
事件处理机制
import java.awt.*; import javax.swing.*; class FrameEvent extends JFrame{ JButton b; FrameEvent(String s){ super(s); setLayout(new FlowLayout()); b = new JButton("press me!"); add(b); pack(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } } class TestEvent { public static void main(String[] args) { new FrameEvent("事件处理"); } }
大外软件-徐
ItemEvent
• 触发时机
– 选择框状态改变(选中或未选中) – 选中下拉列表中的某个选项
• ItemListener接口
– public void itemStateChanged(ItemEvent e)
• ItemEvent类
– getSource()方法返回事件源 – getItemSelectable()方法返回事件源。
• 一般方法
– setEchoChar(char c) – char[] getPassword()
大外软件-徐
大外软件学院(徐)
上机练习
大外软件-徐
大外软件学院(徐)
JPanel
• JPanel类及其子类的实例也是一个容器 • 默认布局是FlowLayout型布局 • 必须放入到另一个底层容器里
大外软件-徐
大外软件学院(徐)
事件处理练习
• 点击“添加”按钮,就会把输入的信息添加 下面的文本区内。如图所示:
大外软件-徐
ActionEvent
大外软件-徐
ActionEvent
• 窗口自身实现ActionListener
大外软件-徐
ActionEvent
class WindowActionEvent extends JFrame
ActionListener
implements
{
JTextField text; JTextArea console; public WindowActionEvent() { setLayout(new FlowLayout()); text = new JTextField(20); console = new JTextArea(5,20); add(text); add(console); text.addActionListener(this); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e) { String str=text.getText(); //获取封装在事件中的“命令”字符串 console.setText(console.getText()+"\n"+str+":"+str.length()); }
大外软件-徐
大外软件学院(徐)
JLabel
• 构造方法
– JLabel() – JLabel(String s)
• 一般方法
– public void setText(String s) – public String getText()
大外软件-徐
大外软件学院(徐)
JButton
• 构造方法
– JButton() – JButton(String s)
• 容器类(Container)和组件类(Component) • P222 图9.1
大外软件-徐
大外软件学院(徐)
JFrame
• 构造方法 – JFrame() – JFrame(String s) • 一般方法 – public void setSize(int width,int height) – public void setVisible(boolean b)设置窗 口是可见还是不可见,窗口默认是不可见的。 • public void setDefaultCloseOperation(int operation)单击关闭图标的处理
大外软件-徐
组件及 事件处理
主要内容
窗口 组件 布局 事件 对话框
Java Swing
• 图形用户界面(Graphics User Interface) • Java抽象窗口工具包(Abstract Window Toolkit) • javax.swing包:提供更强大的GUI类
大外软件-徐
Java Swing
大外软件-徐
大外软件学院(徐)
JComboBox
• 构造方法
– JComboBox()
• 一般方法
– public void addItem(String name) – public String getSelectedItem()
大外软件-徐
大外软件学院(徐)
JCheckBox
• 构造方法
– JCheckBox(String s)
大外软件-徐
ActionEvent练习
大外软件-徐
ActionEvent练习
• 创建一个标题为“计算平方”的窗口 • 窗口中有两个文本框 • 如果在第一个文本框中输入一个整数,会在第二 个文本框中输出该整数的平方值(如图一) • 如果在第一个文本框中输入一个其他字符,会在 第二个文本框中提示“请输入数字”(如图二)
大外软件-徐
大外软件学院(徐)
事件处理机制
事件发生
事件源 (按钮、文本框等)
监听器 回调 接口 中的 方法
事件源.addActionListener (new A())
事件处理程序: class A implements ActionListener{ public void actionPerformed(ActionEvent e) { …… } } 大外软件-徐
大外软件-徐
DocumentEvent
• 触发时机
– 文本区(JTexeArea)中的文本发生改变
• DocumentListener
– public void changedUpdate(DocumentEvent e)
– public void removeUpdate(DocumentEvent e)
大外软件-徐
CardLayout
大外软件-徐
GridLayout
• GridLayout的布局策略:把容器划分成若干行乘若干 列的网格区域,组件就位于这些划分出来的小格中。 • GridLayout布局特点:
– 灵活,划分多少网格由程序自由控制 – 组件定位也比较精确
• GridLayout布局的步骤:
大外软件-徐
ItemEvent
大外软件-徐
ItemEvent练习
• 字体设置
– Font f = new Font(name, Font.BOLD, 32); – 组件.setFont(f);
大外软件-徐
ItemEvent练习
• 一个监视器多个 事件源
大外软件-徐
ItemEvent练习
• CheckBox练习
• 一般方法
– public void setLabel(String s) – public String getLabel()
大外软件-徐
大外软件学院(徐)
JTextArea
• 构造方法 – TextArea() – TextArea(int x,int y)
• 一般方法 – public void setText(String s) – public String getText() – public void append(String s)