Java核心技术学习--第八天

本篇深入探讨Java核心技术,包括集合的排序与搜索算法、Swing图形界面设计、事件处理及Swing组件应用等内容。详细讲解了集合框架的操作方法,如批处理、转换等,并介绍了Swing框架的使用技巧,如布局管理、菜单创建等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第九章 集合

算法

排序与混排

Collection类中的sort方法可以对实现了List接口的集合进行排序。
将所有元素转入数组,对数组进行排序,再将排序后的序列复制回列表。
归并排序稳定,不需要交换相同的元素。

二分查找

集合排好序。
随机访问二分查找才有意义。
如果为二分查找算法提供一个链表,将自动变为线性查找。

简单算法

words.removeIf(w->w.length() <= 3);
words.replaceAll(String::toLowerCase);

java.util.Collections

  • static <T extends Comparable<? super T>> T min(Collection elements)
  • static <T extends Comparable<? super T>> T max(Collection elements)
  • static min(Collection elements, Comparator<? super T> c)
  • static max(Collection elements, Comparator<? super T> c)
  • static void copy(List<? super T> to, List from)
  • static void fill(List<? super T> l, T value)
  • static boolean addAll(Collection<? super T> c, T…values)
  • static boolean replaceAll(List l, T oldValue, T newValue)
  • static int indexOfSubList(List<?> l, List<?> s)
  • static int lastIndexOfSubList(List<?> l, List<?> s)
  • static void swap(List<?> l, int i, int j)
  • static void reverse(List<?> l)
  • static void rotate(List<?> l, int d)
  • static int frequency(Collection<?> c, Object o)
  • boolean disjoint(Collection<?> c1, Collection<?> c2)

批操作

集合与数组的转换

将数组转换为集合,可以使用Arrays.asList包装器。

String[] values = ...;
HashSet<String> staff = new HashSet<>(Arrays.asList(values));

toArray()方法返回的数组是Object数组,不能改变两类型。

编写自己的算法

遗留的集合

Hashtable类

与HashMap作用一样,与Vector类的方法一样,也是同步的。

枚举

属性映射

  • 键与值都是字符串
  • 表可以保存到一个文件,也可以从文件中加载
  • 使用一个默认的辅助表

Stack,扩展为Vector类

java.util.Stack

  • E push(E item)
  • E pop()
  • E peek()

位集

BitSet

第十章 图形程序设计

Swing概述

抽象窗口工具箱AWT。Swing没有完全替代AWT,而是基于AWT架构。

创建框架

顶层窗口被称为框架。AWT库中有一个Frame类,用于描述顶层窗口。Swing版本为JFrame。
Swing类位于javax.swing包中。
所有Swing组件必须由事件分派线程进行配置。

EventQueue.invokeLater(()->
{
	statements
});

框架定位

  • setLocation和setBounds
  • setIconImage
  • setTitle
  • setResizable

框架属性

确定合适的框架大小

Image img = new ImageIcon("icon.gif").getImage();
setIconImage(img);

在组件中显示信息

处理2D图形

使用颜色

文本使用特殊字体

显示图像

第十一章 事件处理

事件处理基础

监听器对象是一个实现了特定监听器接口的类的实例。
事件源是一个能够注册监听器对象并发送事件对象的对象。
当事件发生时,事件源将事件对象传递给所有注册的监听器。
监听器对象将利用事件对象中的信息决定如何对事件做出相应。

ActionListener listener = ...;
JButton button = new JButton("OK");
button.addActionListener(listener);

实例:处理按钮点击事件

简洁地指定监听器

exitButton.addActionListener(event->System.exit(0));

实例:改变观感

适配器类

每个AWT监听器接口都配有一个适配器类。

动作

鼠标事件

AWT事件继承层次

语义事件和底层事件

语义事件是表示用户动作的事件。
底层事件是形成这些事件的事件。

第十二章 Swing用户界面组件

Swing和模型-视图-控制器设计模式

设计模式

模型-视图-控制器模式

实现三个独立的类:

  • 模型:存储内容
  • 视图:显示内容
  • 控制器:处理用户输入

Swing按钮的模型-视图-控制器分析

布局管理概述

边框布局

BorderLayout

网格布局

GridLayout

文本输入

文本域

JTextField

标签和标签组件

JLabel

密码域

每个输入的字符都用回显字符表示。
JPasswordField

文本区

JTextArea

滚动窗格

JScrollPane

选择组件

复选框

接受的输入只是“是”或“非”。
JCheckBox

单选框

JRadioButton

边框

Border

组合框

多个选择项。可以编辑当前的选项内容。
JComboBox

滑动条

JSlider

菜单

菜单栏包含下拉菜单的名字,点击名字可以打开包含菜单项和子菜单的菜单。

菜单创建

创建菜单栏

JMenuBar menuBar = new JMenuBar();

将菜单栏添加到框架上

frame.setJMenuBar(menuBar);

为每个菜单建立一个菜单对象

JMenu editMenu = new JMenu("Edit");

将顶层菜单添加到菜单栏中

menuBar.add(editMenu);

向菜单对象中添加菜单项、分隔符和子菜单

JMenuItem = pasteItem = new JMenuItem("Paste");
editMenu.add(pasteItem);
editMenu.addSeparator();
JMenu optionMenu=...
editMenu.add(optionMenu);

菜单项中的图标

复选框和单选钮菜单项

JCheckBoxMenuItem
JRadioBoxMenuItem

弹出菜单

JPopupMenu

快捷键和加速器

启用和禁用菜单项

工具栏

快速访问常用命令的按钮栏。可以随处移动。
JToolBar

工具提示

复杂的布局管理

网格组布局

组布局

不使用布局管理器

定制布局管理器

遍历顺序

对话框

选项对话框

创建对话框

JDialog

数据交换

文件对话框

颜色选择器

GUI程序排错

调试技巧

让AWT机器人完成工作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值