java
文章平均质量分 78
钰娘娘
学多了感觉有点玄乎,终极问题都回到XX的原理是什么,于是层层dfs,有点探索世界本源的意思了,有点修炼至神的味道。程序员果然是新时代的创始神。
展开
-
《Java 核心技术 卷1》 笔记 第九章扩展 总结扫雷小项目(3) 效果调整+右键显示小旗子
9.8.5 效果调整数字都冒出来,事实上显示内容太多了。如果出现数字,我们希望不继续扫描,增加可玩性:private void dfs(int i, int j){ if(i<0 || i >= row || j < 0 || j >= col || visited[i][j] || hasSweeper[i][j]) return; visited[i][j] = true; J...原创 2022-03-10 10:06:32 · 539 阅读 · 16 评论 -
《Java 核心技术 卷1》 笔记 第九章扩展 总结扫雷小项目(2) 扫雷图像+无雷区域扩展+数字提示
9.8.2 扫雷图像设置我们注意到,点到有雷区域时,不会显示当前的雷,我们尝试用图像表达点到雷的效果:扫到雷:b.setIcon(new ImageIcon("src/resource/p1.png"));输了之后的重置:B.setIcon(null);效果:图片来源:https://www.iconfont.cn/collections/detail?spm=a313x.7781069.1998910419.dc64b3430&cid=2975...原创 2022-03-09 14:40:56 · 665 阅读 · 5 评论 -
《Java 核心技术 卷1》 笔记 第九章扩展 总结扫雷小项目(1) 基础扫雷页面+点击效果处理
9.8 小项目扫雷9.8.1 基础页面扫雷是运气与概率的结合,是一款十分经典的小游戏。学完第九章,迫不及待想做一个有页面的扫雷。布局:setLayout(new GridLayout(row,col));放按钮:For(int I = 0; I < 10; i++){For(int j = 0; j < col; j++){add(new Jbutton());}}基本页面就出来了9.8.2 点击按钮事件处理放置雷,已经...原创 2022-03-08 10:59:37 · 4131 阅读 · 8 评论 -
《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(16) 颜色选择器
用一用图片选择器原创 2022-03-07 10:37:57 · 257 阅读 · 9 评论 -
《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(15) 对话框数据交换
9.7 3 数据的获取与显示对话框进行点击后,需要对对话框操作得结果进行处理。默认按钮,焦点选择的按钮,按回车键可以自动选择。dialog.getRootPane().setDefaultButton(okButton);效果:页面显示菜单栏,点击 Connect, 弹框,点击 Exit 退出 Connect 时触发 JPanel JPanel 内放置JDialog,JDialog显示时,直接把JPanel放在Jdialog 里面显示 按钮效果处理,点击ok时触发...原创 2022-03-06 15:24:56 · 488 阅读 · 1 评论 -
《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(15) 对话框
9.7 对话框AWT的对话框分为强制交互对话框(原文:模式对话框)和非强制交互对话框(原文:无模式对话框)。强制交互对话框: 结束处理前,不允许用户与应用程序的其他窗口交互。示例:创建文件时输入文件名。非强制交互对话框:允许同时处理对话框和应用程序其他窗口信息。示例:工具栏。9.7.1 选项对话框(消息对话框)消息框,显示信息展示给用户,只有 OK 可以选:showMessageDialog 确认框,确认危险操作,比如添加、删除、注销,可选 OK/Cancel,sh...原创 2022-03-05 11:15:31 · 539 阅读 · 1 评论 -
《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(14) 自定义布局与遍历顺序
9.6.4 自定义布局管理器有时候觉得布局管理器不好用,可以自己制作作者给的圆形布局:把控件按照圆形均分(通过圆心计算sin/cos), 原版的控件有重叠,改了下尺寸,显示效果会好一些:import javax.swing.*;import java.awt.*;public class Main { public static void main(String[] args) { Main solution = new Main(); ...原创 2022-03-04 09:51:32 · 376 阅读 · 5 评论 -
《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(13) 组布局
9.6.2 组布局Matisse GUI构造器。可通过拖拽快速构建布局。大概就是可以通过组进行添加,然后组里面可以加子类GroupLayout.SequentialGroup和GroupLayout.ParallelGroup说一下看懂的部分:组里可以加组,可以加控件 createSequentialGroup 是垂直的组 createSequentialGroup内部可以createParallelGroup 中间可加Gap分割 TRAILING 是右对齐 Par..原创 2022-03-03 13:38:43 · 506 阅读 · 1 评论 -
《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(12) 网格组布局
9.6 复杂布局管理为什么要使用自带的布局管理器?可适应字号、字体,放大缩小等需要9.6.1 网格组布局没有限制的网格布局,行列尺寸都可以改变,组件不需要填充,可以在单元格内部指定对齐方式。使用网格组布局步骤:建立 GridBagLayout 对象GridBagLayout layout = new GridBagLayout();设置为布局管理器panel.setLayout(layout);每个组件建立 GridBagConstraints 对象GridB...原创 2022-03-02 11:56:56 · 472 阅读 · 3 评论 -
《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(11) 工具栏
9.5.7 工具栏工具栏是菜单栏下,直接点击可以执行命令的按钮,特殊之处是可以拖动。注意只有使用边框布局并且不放在 CENTER 的情况下才可以拖拽。JToolBar bar = new JToolBar();bar.add(blueButton);可以用action填充:Bar.add(blueAction);不停靠标题:Bar = new JToolbBar(title);设置垂直:Bar = new JToolBar(SwingConstants.VER...原创 2022-03-01 11:22:13 · 445 阅读 · 1 评论 -
《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(10) 快捷键与启用、禁用
9.5.5 快捷键和加速器JMenuItem aboutItem = new JMenuItem("About",'A');按下字母'A'即可选择快捷键action对象处理:Action.putValue(Action.MNEMONIC_KEY, new Integer('A'));菜单设置快捷键字母:helpMenu.setMnemonic('H');组合键设置:openItem.setAccelerator(KeyStroke.getKeyStroke(...原创 2022-02-28 15:55:09 · 770 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(9) 单选多选下拉菜单和弹出菜单
9.5.3 复选框和单选按钮菜单项在文本旁标注复选框或单选按钮得到菜单项复选框菜单项:JCheckBoxMenuItem readonlyItem = new JCheckBoxMenuItem("Read-only");optionsMenu.add(readonlyItem);单选菜单项:需要加入 ButtonGroup:JRadioButtonMenuItem insertItem = new JRadioButtonMenuItem("Insert");i...原创 2022-02-27 16:15:11 · 722 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(8)
9.5 菜单通常对于数据操控方式,除了按钮,选择器,下拉列表的方式,通常还有下来菜单。9.5.1 菜单创建为窗体添加菜单:JMenuBar menuBar = new JMenuBar();Frame.setJMenuBar(menuBar);为菜单添加菜单项:JMenuItem pasteItem = new JMenuItem("Paste");editMenu.add(pasteItem);为菜单添加分隔线:editMenu.addSeparator();..原创 2022-02-26 11:36:29 · 487 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(7)
9.4.5 滑块用来进行连续数值调节,比如颜色的深浅构建: JSlider slider = new JSlider(min, max, inititalValue);最小、最大、初始值垂直滑块:JSlider slider = new JSlider(SwingConstants.VERTICAL, min, max, inititalValue);移动滑块监听:ChangedListener可通过 slider.getValue() 获取滑块当前的移动数值滑...原创 2022-02-25 10:56:04 · 296 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(6)
9.4.3 边框边框:分隔出多个组别可选效果:凸出 凹陷 刻线 线条 粗线条添加标题:BoderFactory.createTitledBorder组合边框:BorderFacotory.createCompoundBorder把边框添加到组件:Border etched = BorderFactory.createEtchedBorder();Border titled = BorderFactory.createEtchedBorder(etc...原创 2022-02-24 15:22:59 · 533 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(5)
9.4 选择组件有时候需要用户对结果进行选择,比如服务评价。常用的选择方式有:复选框 单选按钮 选项列表 滑块9.4.1 复选框有时只有一个选项,选择或不选择,比如用户协议。这时用到复选框。创建:JCheckBox bold = new JCheckBox("Bold");选定:bold.setSelected(true);动作监听同按钮,使用 AcitonListener 书上例子:import javax.swing.*;import ...原创 2022-02-23 14:53:58 · 242 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(4)
9.3.3 密码文本框为了避免进行投屏展示时,密码在输入过程中发生泄露,需要在页面显示上屏蔽密码的实际输入内容。import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Main { public static void main(String[] args) { Main solution = new Main(); EventQueue...原创 2022-02-22 13:43:44 · 421 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(3)
9.3 文本输入JTextField 单行文本JTextArea 多行文本常用方法:getText() 获取文本setText(String) 设置文本isEditable() 是否可编辑修改文本setEditable(boolean b) 设置是否可编辑文本9.3.1 JTextFieldsetColumn(int);刷新容器,设置列数Container.revalidate();//刷新容器,修改大小时需要import javax.swing.*;..原创 2022-02-21 11:27:37 · 340 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(2)
9.2 布局管理器概述JPanel默认布局是流式布局Component子组件非常多大多情况下,容器是组件,容器可以包含容器和组件,但是也有特例:JFrame 是顶层容器,不能被其他组件包含JComponent 是组件,但是继承 JContainer,不直接继承 Component代码:public class Main { public static void main(String[] args) throws CloneNotSupported...原创 2022-02-20 17:29:54 · 320 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件
主要内容Swing窗口中常用的组件 页面布局 在 swing 中实现对话框9.1 Swing 和 MVC (Model-View-Controller)模式9.1.1 设计模式模型:房间,窗户视图:实际窗户在房间的展示效果控制器:设计窗户的大小、位置、角度、制作材料Swing 中用到的设计模式:组合模式:多个组件包含在容器中装饰模式:滚动条面板,传入现有的组件类,对现有类操作策略模式:布局管理器,面板和固定的,通过参数传入内部组件的排列方式...原创 2022-02-19 16:26:55 · 331 阅读 · 0 评论 -
从零开始读 Java 源码 第一章 接口篇 Serializable(3)
1.3 序列化版本号序列化操作运行时组织序列化类是通过版本号来进行的,叫做 serialVersionUID, 用来进行反序列化校验发送者和接收者序列化对象有加载类,兼容关于相应的对象。如果接收者加载了一个类的对象和请求放的 serialVersionUID 不一致,那么反序列化过程就会产生一个 InvalidClassException 异常。一个序列化对象可以声明它自己的全局变量命名为 serialVersionUID 并且这个对象它必须是使用 static final long 修饰的。...原创 2022-02-19 17:38:43 · 312 阅读 · 0 评论 -
从零开始读 Java 源码 第一章 接口篇 Serializable(2)
1.2 序列化过程中特殊处理方法类在序列化反序列化过程中需要特殊的方法进行处理:1.2.1 writeObjectwriteObject 方法是对当前对象的部分类进行写操作,所以在 readObject 方法中可以读取它。默认机制使用 out.defaultWriteObject 保存对象字段 。 这个方法不需要关心它的状态属于父类型或者子类型。状态是保存在 ObjectOutputStream 写入时私有属性,或者使用 DataOutput 支持的私有数据段。...原创 2022-02-18 17:13:10 · 293 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第八章 事件处理(4)
鼠标点击与事件总结原创 2022-02-18 11:46:20 · 460 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第八章 事件处理(3)
8.1.5 适配器类捕获窗体操作:Frame.addWindowListener(listener);WindowListener 有六个接口,而通常我们只用到其中的1到2个,这个时候就可考虑改用适配器 WindowAdapter为什么用 WindowAdapter 适配器就不用书写全部方法呢?WindowAdapter 是一个抽象类,它实现了窗体接口相关的全部接口,让其变成非抽象方法。因此我们可以只适配其中一部分方法:相当于,实现接口这一步它替我们做了。..原创 2022-02-17 13:37:51 · 289 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第八章 事件处理(2)
8.1.3 创建包含一个方法调用的监听器格式: yellowButton.addActionListener(EventHandler.create(ActionListener.class,this,"setTitle","source.text"));EventHandler.create 参数解释:监听器名称 控件对象 2中控件对应方法 设置的值是监听器传入的 EventObject 对应的那个属性值示例:改标题public class Main { pu..原创 2022-02-16 11:54:17 · 512 阅读 · 0 评论 -
从零开始读 Java 源码 第一章 接口篇 Serializable(1)
Serilazable的父子类,与能否正确序列化原创 2022-02-15 16:24:15 · 393 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第八章 事件处理
8.1 事件处理基础事件:用户进行某种输入操作时,触发的效果。比如点击鼠标,按下键盘按键。事件过程(VB):事件与过程之间有显著的关系。把触发效果(固定,语言写死)对应的过程放在事件编写的代码中。事件队列(C):代码不断检查事件队列,查询到有事件发生时,进行处理。Java的事件触发过程:指派事件监听器 接收事件 处理事件Java中所有对象派生于EventObjectActionEvent:按钮事件WindowEvent:窗口事件8.1.1 按钮点...原创 2022-02-15 14:41:21 · 367 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第七章 图形程序设计(6) 图像平铺
7.10 图像 读取图像 Image image = ImageIO.read(new File("src/resource/background.jpeg")); 获取图片宽高 int imageWidth = image.getWidth(this);int imageHeight = image.getHeight(this); 循环平铺g.copyArea(0,0,imageWidth,imageHeight,i,j); 参数:x,y,宽,高,粘贴左上角位置...原创 2022-02-14 14:12:50 · 218 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第七章 图形程序设计(5)
7.9 为文本设置特殊字体设置的字体,只能是当前系统的字体之一,可使用 GraphicsEnvironment 打印适合当前系统的字体。public class Main { public static void main(String[] args) throws CloneNotSupportedException, InterruptedException { Main solution = new Main(); GraphicsEnv...原创 2022-02-13 20:23:44 · 514 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第七章 图形程序设计(4)
7.7 2D图形Graphics可绘制:直线、矩形、椭圆等 2D 图形JDK1.2 后引入 Graphics2D,可强制把 Gaphics 转换为 Graphics2D直线:Line2D矩形:Rectangle2D椭圆:Ellipse2D点:Point2D矩形float:Rectangle2D.Float矩形double:Rectangle2D.Doubleclass DrawComponent extends JComponent{ public void..原创 2022-02-12 16:08:08 · 539 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第七章 图形程序设计(3)
7.5 决定窗体的大小如果没有明确给出窗体大小,默认值0*0处理框架提示:只包含标准组件,可以用下面的代码设置为刚好放下的大小:pack,全屏:frame.setExtendedState(Frame.MAXIMIZED_BOTH);import javax.swing.*;import java.awt.*;public class Main { public static void main(String[] args){ Main ...原创 2022-02-11 14:58:29 · 298 阅读 · 0 评论 -
从零开始读 Java 源码 序言 怎么读源码
怎么看源码,查看类关系原创 2022-02-10 16:52:15 · 227 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第七章 图形程序设计(2)
7.4 框架属性getter,setter 方法通常如下:public String getTitle(){ return title;}public void setTitle(String title){ this.title = title;}但是对于布尔类型,getter 方法则会以is开头public boolean isLocationByPlatform(){ return b;}public void setLocationByPlatform(bo...原创 2022-02-10 15:00:27 · 535 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第七章 图形程序设计
说实话,要不要跳过 Java 图形页面这个问题我纠结了很久。工作多年,已经把 Java 的 GUI 和 swing 忘的一干二净,不会有公司用它的,办公场景完全用不到 swing。但是,我们可以完全可以考虑拿它做一些小工具,比如软件开启集成页,省的每次在系统里,都要在固定地方打开软件。再比如桌面闹钟,计时器,json 格式化工具,时间戳转换工具。它原生、轻量级,只要有 java 环境就能用,还能用 exe4j 打包,那就可以直接生成 exe 文件,随时可用。考虑到这点,打算再学习一遍...原创 2022-02-09 15:09:11 · 667 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第六章 接口和内部类(7) 动态代理
6.5.2 动态代理Java常用的动态代理有两种:JDK动态代理和cglib动态代理下载地址参考:maven下载地址:https://mvnrepository.com/artifact/cglib/cglib-nodep/2.2若资源失效,可考虑百度网盘下载:百度网盘cglib资源提取码:fhgqJDK动态代理是 java.lang.reflect 包中内容,无需额外导入包 实现 InvocationHandler 固定写法,invoke 调用原类中方法...原创 2022-02-08 16:24:17 · 348 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第六章 接口和内部类(6) 静态代理
6.5 代理啥是代理?代理人就是替你办事的那个人。比如点了外卖,外卖小哥就是你取餐的代理人。代理除了能完成既定任务,还可以完成额外任务。比如,你留言让他给你带瓶可乐。代理类就是替一个类完成委托地另一个类。6.5.1 静态代理静态代理就是你的代理能替你干所有事,但是它只能替你完成这些事,无法帮其他人完成事情。实际生活中常用的就是用户查询自己的个人信息,通过一个叫Controller的东西,Controller把查询的事委托给Service,Service从数据库(DAO层)获取用户的全部信..原创 2022-02-07 15:18:31 · 1102 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第六章 接口和内部类(5) 匿名内部类和静态内部类
匿名内部类和静态内部类原创 2022-02-06 18:33:50 · 596 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第六章 接口和内部类(4) 局部内部类和局部内部类引用方法变量分析
局部内部类和局部内部类引用方法变量分析原创 2022-02-05 15:14:50 · 766 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第六章 接口和内部类(3) 接口回调与内部类
6.3 接口与回调回调:指定某个特定事件发生时,应当采取的动作。比如按下鼠标,或者点击菜单时采取的行动。(以下代码基本来自书中)public class Main { public static void main(String[] args) throws CloneNotSupportedException, InterruptedException { Main solution = new Main(); Timer t = new Timer...原创 2022-02-04 11:36:52 · 658 阅读 · 0 评论 -
《Java 核心技术 卷1》 笔记 第六章 接口和内部类(2)
6.1.1 接口的特性1 不能使用new关键字进行实例化2 可以声明接口类型对象3 可以使用instanceof检查对象对应的类是否实现了特定的接口4 接口间支持扩展,支持多继承5 JDK1.8之前不支持静态方法,不能有方法体;JDK1.8开始,接口可以有默认方法以及静态方法6 所有接口中的全局变量,默认都使用public static final 修饰public class Main { public static void main(String[] arg...原创 2022-02-03 19:21:01 · 483 阅读 · 0 评论