全部章节   >>>>


本章目录

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. JAVA中的六种日期类型使用

    基本的6种日期类 /** * 六种时间类型的类 * 数据库格式的时间三种格式 */ java.util.Date date = new java.util.Date();//年与日时分秒 //数据库的 ...

  2. Linux基础命令---elinks文本浏览器

    elinks elinks指令是一个纯文本格式的浏览器,支持颜色.表格.鼠标.菜单操作. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora.   1.语法       ...

  3. 移动端(App)项目进行满屏高度的设置

    做移动端App的时候 高度一般会根据页面的元素进行自动设置,不会铺满整个屏幕.通过以下代码实现满屏高度. #app{ width: 100%; height: 100%; position: abso ...

  4. 二级C复习

    二级C语言 队列 计算队列中元素个数 种 : rear > front ,直接减 第二种: rear < front 上面两种综合一起,求元素个数公式 :(r - f + maxsize) ...

  5. jdk1.8帮助文档中文可搜索

    jdk1.8帮助文档中文可搜索 链接:https://pan.baidu.com/s/11beeZLpEIhciOd14WkCpdg 提取码:t4lw

  6. Android Service VS AsyncTask VS Thread

    这三种方式的设计目的是不同的. Service: 适用于在后台长期持续运行的动作,如:播放音乐,查看网络数据.注意,在开发文档中,service本身是在UI线程中,所以所需的操作应该创建一个新的线程来 ...

  7. 分布式可扩展web体系结构设计实例分析

    Web分布式系统设计准则 下面以一个上传和查询图片的例子来说明分布式web结构的设计考虑和常用的提高性能的方法.该例子提供上传图片和下载图片两个简单功能,并且有一下假设条件?: - 可以存储无上限数量 ...

  8. [BUUCTF]PWN——picoctf_2018_rop chain

    picoctf_2018_rop chain 附件 步骤: 例行检查,32位,开启了NX保护 试运行一下程序,看到输入太长数据会崩溃 32位ida载入,习惯性的检索程序里的字符串,看见了flag.tx ...

  9. 极简!一个注解就能创建Jaeger的Span

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  10. 超链接 a 标签点击时,弹出提示框,可以按照如下来写

    onclick="return confirm('确定删除该条记录?')" 加上这条记录后,就可以在访问href属性指向的链接时,有弹出提示