全部章节   >>>>


本章目录

11.1 JTable表格组件

11.1.1 JTable表格组件

11.1.2 实践练习

11.2 菜单组件

11.2.1 菜单组件

11.2.2 实践练习

11.3 事件处理

11.3.1 事件处理机制

11.3.2 事件和事件监听器

常用事件监听接口

11.3.3 实践练习

11.4 JDialog对话框

11.4.1 JDialog组件

JDialog 的构造方法

11.4.2 实践练习

总结:


11.1 JTable表格组件

11.1.1 JTable表格组件

Swing中JTable用于显示表格数据。

JTable构造方法

JTable(Object data[][], Object heads[])

data是一个二维数组,包含要显示的信息,heads是一个一维数组,其中的信息是列表头。

JTable组件使用步骤

  1. 创建一个JTable对象。
  2. 创建一个J滚动面板ScrollPane对象(指定表格及水平和垂直滚动条)。
  3. 将表格添加到滚动面板。
  4. 将滚动面板添加到JFrame的内容窗格中。

示例:使用JTable组件显现人员信息列表

public void init(){
BorderLayout bl=new BorderLayout();
this.setLayout(bl);
//定义表格的表头信息
String[] heads={"姓名","年龄","电话"};
//定义表格中显示的信息
Object[][] data={
{"丘处机","33","13870943994"},{"徐世绩","28","18062795496"},
{"杜如晦","29","18600158798"},{"方孟傲","35","13836188388"},
{"杜小月","19","15248779908"},{"余国荔","25","13238112922"},
{"罗士信","29","15927271222"},{"林徽因","34","15108235082"},
{"陈永华","39","13296693349"},{"萧漩语","34","15847006955"}};
//创建JTable对象
jTable=new JTable(data,heads);
int v=ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
//创建滚动条面板对象,将JTable加入滚动条中,显示横向和垂直滚动条
JScrollPane jsp=new JScrollPane(jTable,v,h);
//将滚动面板添加至JFrame中
this.add(jsp);
this.setSize(450, 200);
this.setVisible(true);
}

11.1.2 实践练习

11.2 菜单组件

11.2.1 菜单组件

JMenuBar菜单工具栏,可以在其中添加多个JMenu菜单条。

JMenu菜单,可以在其中添加多个JMenuItem菜单项。

JMenuItem菜单

创建JMenuBarJMenuJMenuItem实例都可以直接通过其构造方法实现,构造方法中都含有一个字符串类型参数,该参数用于指定显示在菜单上的标题。

JMenu jmf=new JMenu("文件(File)");

创建菜单可以通过setMnemonic()方法设置快捷方式

jmf.setMnemonic(“F”); //在菜单jmf上设置快捷方式F

JTable组件使用步骤:

  1. 创建菜单工具栏 JMenuBar
  2. 创建多个菜单条 JMenu
  3. 创建多个菜单项 JMenuItem
  4. 将菜单添加至对应的菜单条中。
  5. 将菜单条添加至菜单工具栏中。
  6. 将菜单工具栏加入窗体类 JFrame 中。

示例:使用菜单组件创建菜单

public void init(){
this.setLayout(new FlowLayout(FlowLayout.LEFT));
//1.创建菜单工具栏
JMenuBar jmb=new JMenuBar();
//2.创建一级菜单JMenu
JMenu jmf=new JMenu("文件(File)");
//设置快捷方式
jmf.setMnemonic('F');
JMenu jme=new JMenu("编辑(Edit)");
jme.setMnemonic('E');
JMenu jms=new JMenu("资源(Source)");
jms.setMnemonic('s');
...
//3.创建多个JMenuItem项目,创建二级菜单
JMenuItem jmi_new_item=new JMenuItem("新建(N)");jmi_new_item.setMnemonic('N');
JMenuItem jmi_open_item=new JMenuItem("打开(O)");jmi_open_item.setMnemonic('O');
JMenuItem jmi_save_item=new JMenuItem("保存(S)");jmi_save_item.setMnemonic('S');
//4.将菜单项加入文件菜单条中
jmf.add(jmi_new_item);jmf.add(jmi_open_item);jmf.add(jmi_save_item);
//5.将菜单栏加入文件菜单条中
jmb.add(jmf);jmb.add(jme);jmb.add(jms);jmb.add(jmn);jmb.add(jmh);
//6.将菜单工具栏加入JFrame中
this.setJMenuBar(jmb);
this.setSize(400, 200);
this.setVisible(true);
}

11.2.2 实践练习

11.3 事件处理

11.3 事件处理

11.3.1 事件处理机制

事件。发生在界面上的用户交互行为所产生的一种效果。例如,点击鼠标左键,单击一个JButton按钮,就会弹出一个对话框,单击“关闭”按钮就会关闭应用程序窗口等。

事件源。发生事件的对象被称为事件源,如按钮、JFrame窗口均为事件源。

事件监听器。负责监听事件源所发生的事件,并对各种事件做出相应的处理。

委托事件处理模式。

由事件源产生事件,委托给一个或多个事件监听器来监听事件。

当监听器监听到事件被触发时,监听器根据事件产生的类型将其转交给事件处理者(即处理的方法)来处理事件。

11.3.2 事件和事件监听器

事件机制涉及3个成员:事件源事件事件监听器。

事件源的创建仅需要通过new关键字创建一个组件对象,而事件由系统提供。所以,实现事件监听器是整个事件处理的核心。

JDK中通过大量的事件监听器接口用于实现不同类型的事件监听器,来监听不同类型的事件。

Swing中使用AWT的事件处理方式,所有的事件类均为EventObject的子类。这些事件监听的接口大多定义在java.awt.event中。

常用事件监听接口

事件监听接口

说明

ActionListener

用于接收操作事件的监听器接口。例如,点击按钮、点击菜单项、文本框按回车等动作

ItemListener

用于处理选项事件的监听器接口。例如,选择JCheckBox、JRadioButton、Jlist以及JcomboBox中的选项

KeyListener

用于接收键盘事件(击键)的监听器接口

MouseListener

用于处理鼠标事件(按下、释放、单击、进入或离开)的监听器接口

TextListener

接收文本事件的监听器接口,用于监听文本组件内容改变。该监听器只有一个方法:textValueChanged(TextEvente)

FocusListener

接收组件上的键盘焦点事件的侦听器接口,用于监听组件收到或失去焦点

AWT低级事件

  • ComponentEvent:组件事件,用于组件尺寸的变化和移动。
  • ContainerEvent:容器事件,当容器发生添加组件、删除组件时,触发该事件。
  • WindowEvent:窗口事件,当窗口状态发生改变,如打开、关闭、最小化时,触发该事件。
  • FocusEvent:焦点事件,当组件得到焦点或失去焦点时触发该事件。
  • KeyEvent:键盘事件,当按钮被按下、松开、单击时触发该事件。
  • MouseEvent:鼠标事件,当按钮被按下、松开、移动鼠标等动作时触发该事件。

AWT高级事件

  • 高级事件是基于语义的事件,它可以不与特定的动作相关联,而依赖于触发此事件的类。
  • 例如,在TextFied(文本域)中按下Enter盘就会触发ActionEvent事件,在滚动条上移动滑块会触发AdjustmentEvent事件,选中下拉列表中的某一项就会触发ItemEvent事件。
  • ActionEvent:动作事件,当按钮、菜单项被单击,在TextField中按Enter键时触发该事件。
  • AdjustmentEnvent:调节时间,在滚动条上移动滑块时触发该事件。
  • ItemEvent:选项事件,当用户选中某项,或取消选中某项时触发该事件。
  • TextEvent事件:文本事件,当文本框、文本域中的文本发生改变时触发该事件。

示例:事件处理机制

//为btn添加事件
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//使用JOptionPane类的showMessageDialog()方法弹出提示框
JOptionPane.showMessageDialog(null, "按钮被单击了!");
}
}); //为JCheckBox注册addItemListener事件
box1.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
//判断事件源对象是否为box1
if(e.getSource()==box1){
JOptionPane.showMessageDialog(null,"你选择的是:"+box1.getText());
}
}
});
//为JTextField注册事件
text.addFocusListener(new FocusListener() {
public void focusLost(FocusEvent e) {
//获取输入文本框中字符的长度
int length=text.getText().length();
if(length>10){
JOptionPane.showMessageDialog(null,"内容长度不能超过6位");
}
}
public void focusGained(FocusEvent e) {
text.setText("文本框被选中了!");
}
});
//为JComboBox下拉列表框注册事件
cbx.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
//判断下拉列表框中的内容是否没选中
if(e.getStateChange()==ItemEvent.SELECTED){
JOptionPane.showMessageDialog(null,"您的国籍是:"+cbx.getSelectedItem());
}
}
});

11.3.3 实践练习

11.4 JDialog对话框

11.4.1 JDialog组件

JDialog。顶级窗口,它和Dialog一样都是表示对话框。

JDialog对话框可分为两种:模态对话框和非模态对话框

  • 模态对话框。是指用户需要等到处理完对话框后才能继续与其他窗口交互。
  • 非模态对话框。允许用户在处理完对话框的同事与其他窗口交互。

JDialog 的构造方法

构造方法

说明

JDialog(Frame owner)

构造方法,用来创建一个非模态的对话框,owner为对话框所有者(顶级窗口)

JDialog(Frame owner, String title)

构造方法,创建一个具有指定标题的非模态对话框

JDialog(Frame owner, boolean modal)

创建一个有指定模式的无标题对话框

示例:JDialog组件示例

final JDialog dialog = new JDialog(f,"Dialog");
dialog.setSize(220,150); //设置对话框大小
dialog.setLocation(350, 250); //设置对话框位置
dialog.setLayout(new FlowLayout()); //设置布局管理器
final JButton btn3 = new JButton("确定");
dialog.add(btn3); //在对话框的内容面板添加按钮
//为“模态对话框”按钮添加点击事件
btn1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//设置对话框为模态
dialog.setModal(true);
//如果JDialog窗口中没有添加了JLabel标签,就把JLabel标签加上
if (dialog.getComponents().length==11)
dialog.add(label);
//修改标签的内容
label.setText("模式对话框,点击确定按钮关闭");
dialog.setVisible(true); //显示对话框
}});
//为“非模态对话框”按钮添加点击事件
btn2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//设置对话框为非模态
dialog.setModal(false);
...
}});

11.4.2 实践练习

总结:

  • Swing中JTable用于显示表格数据。JTable的构造方法是:JTable(Object data[][], Object heads[])
  • data是一个二维数组,包含要显示的信息,heads是一个一维数组,其中的信息是列表头。
  • JMenuBar为菜单工具栏,JMenu为菜单条,JMenuItem为菜单项。菜单组件的操作方法是将菜单项添加到菜单,再将菜单添加到菜单条。
  • 事件处理机制的三要素为事件、事件源和事件监听器,Swing采用委托事件处理模式进行事件处理。其做法是由事件源产生事件,委托给一个或多个事件监听器来监听事件。当监听器监听到事件被触发时,监听器根据事件产生的类型将其转交给事件处理者(即处理的方法)来处理事件。
  • JDialog对话框可分为两种:模态对话框和非模态对话框。模态对话框是指用户需要等到处理完对话框后才能继续与其他窗口交互,非模态对话框允许用户在处理完对话框的同事与其他窗口交互。

Java面向对象笔记 • 【第11章 Swing高级应用】的更多相关文章

  1. 20145330《Java学习笔记》第一章课后练习8知识总结以及IDEA初次尝试

    20145330<Java学习笔记>第一章课后练习8知识总结以及IDEA初次尝试 题目: 如果C:\workspace\Hello\src中有Main.java如下: package cc ...

  2. Java面向对象程序设计第14章3-8和第15章6

    Java面向对象程序设计第14章3-8和第15章6 3.完成下面方法中的代码,要求建立一个缓冲区,将字节输入流中的内容转为字符串. import java.io.*; public class tes ...

  3. Java面向对象程序设计第9章1-9

    Java面向对象程序设计第9章1-9 1. 线程和进程的联系和区别是什么? 联系: 一个进程可以包括多个线程. 区别: 进程: 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,它是系统 ...

  4. Java面向对象程序设计第8章3-5

    Java面向对象程序设计第8章3-5 3.String类型有什么特点? 一旦赋值,便不能更改其指向的字符对象 如果更改,则会指向一个新的字符对象 不能为null 4.String什么时候进行值比较,什 ...

  5. Java面向对象程序设计第7章1-8

    Java面向对象程序设计第7章1-8 1."程序中凡是可能出现异常的地方必须进行捕获或拋出",这句话对吗? 不对. 异常分两类,runtime异常和非runtime异常. runt ...

  6. java JDK8 学习笔记——第11章 线程和并行API

    第11章 线程与并行API 11.1 线程 11.1.1 线程 在java中,如果想在main()以外独立设计流程,可以撰写类操作java.lang.Runnable接口,流程的进入点是操作在run( ...

  7. 20191105 《Spring5高级编程》笔记-第11章

    第11章 任务调度 任务调度由三部分组成: 任务:需要在特定时间运行或定期运行的业务逻辑块: 触发器:指定任务应该执行的条件: 调度程序:根据来自触发器的信息执行任务: 11.2 Spring中的任务 ...

  8. Java面向对象笔记 • 【第3章 继承与多态】

    全部章节   >>>> 本章目录 3.1 包 3.1.1 自定义包 3.1.2 包的导入 3.1.3 包的访问权限 3.1.4 实践练习 3.2 继承 3.2.1 继承概述 3 ...

  9. [core java学习笔记][第十一章异常断言日志调试]

    第11章 异常,断言,日志,调试 处理错误 捕获异常 使用异常机制的技巧 使用断言 日志 测试技巧 GUI程序排错技巧 使用调试器 11.1 处理错误 11.1.1异常分类 都继承自Throwable ...

随机推荐

  1. C++之数组转换

    题目如下: 这道题经过好久的思考也没找到能一次性输入两组数的方法,只能一次性处理一组数,所以就把代码放上来,欢迎交流留言一起讨论可以放两组数的方法~(QQ 841587906) 1 #include ...

  2. Kotlin 学习(1)

    本文出自链接:https://www.jianshu.com/p/ef9584a8ebf8 Kotlin的插件安装: Settings->Plugins->Browse Repositor ...

  3. 11-如何通过newman生成不同类型的测试报告

    postman生成测试报告需要一个插件:newman ,并且这个插件需要先安装 . 安装步骤: 安装nodejs: newman是由nodejs开发,所以要先安装它的运行环境,下载地址:http:// ...

  4. SVN终端演练-版本回退

    1. 版本回退概念以及原因?    概念: 是指将代码(本地代码或者服务器代码), 回退到之前记录的某一特定版本    原因: 如果代码做错了, 想返回之前某个状态重做;2. 修改了,但未提交的情况下 ...

  5. 【Linux】【Basis】用户、组和权限管理

    1. 概念: 1.1. 每个使用者都有,用户标识UID和密码:并且有身份(Authentication),授权(Authorization),审计(Audition):组(用户组,用户容器) 1.2. ...

  6. spring cloud config center Git SSH configuration

    Git SSH configuration using properties By default, the JGit library used by Spring Cloud Config Serv ...

  7. springMVC中@requestMapper的使用和注意事项

    package com.hope.controller;import org.springframework.stereotype.Controller;import org.springframew ...

  8. python pandas 中文件的读写——read_csv()读取文件

    read_csv()读取文件1.python读取文件的几种方式read_csv 从文件,url,文件型对象中加载带分隔符的数据.默认分隔符为逗号read_table 从文件,url,文件型对象中加载带 ...

  9. 基于Web的质量和测试度量指标

    直观了解软件质量和测试的完整性 VectorCAST/Analytics可提供便于用户理解的web仪表盘视图来显示软件代码质量和测试完整性指标,让用户能够掌握单个代码库的趋势,或对比多个代码库的度量指 ...

  10. .net core Winform 添加DI和读取配置、添加log

    首先新建配置类 public class CaptureOption { /// <summary> /// 是否自启 /// </summary> public bool A ...