![](https://img-blog.csdnimg.cn/551ef2bfdb0e434eb8695da1920d4c2b.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java项目实践——QH(启航)篇
学了一段时间,就打算写点东西练练手,但是写着写着,都会发现思路乱了,现在打算开始养成写博客的习惯。不要等写的东西多了,就忘了初心在哪。
徐静清
静而徐清,动而徐生
展开
-
4.4 A*算法——运行结果
随便点起点和终点,然后设置黑色的障碍物,看看寻路的结果吧;其实不一定是唯一的,但是会选代价最小的其中一条。原创 2023-11-24 15:01:54 · 409 阅读 · 0 评论 -
4.3A*算法——算法内容
【代码】4.3A*算法——算法内容。原创 2023-11-24 14:59:35 · 352 阅读 · 0 评论 -
4.2A*算法——绘制地图的界面
就是把每次计算出来的结果绘制出来,算是对算法每一步的结果的一个可视化吧。原创 2023-11-24 14:58:25 · 347 阅读 · 0 评论 -
4.1 A*算法
主要的功能界面:就是定义地图绘制的位置,按钮等控件的位置,然后吧界面稍微调的和谐一点。原创 2023-11-24 14:56:24 · 315 阅读 · 0 评论 -
4.A*算法
先说一下想法,收先肯定要画一个类似于棋盘的东西,然后需要几个按钮,设置起始位置、设置障碍物、开始寻路、清空地图,所以需要在一个pannel里至少分出两块,一个交互区域,一个地图显示区域。集成第一个内容上去吧,不然都是架子,空荡荡的;关于A*算法的原理网上有很多啦,也有很多升级版,我就写一个最基本的吧,完成最短路径的计算就行了。然后就是算法的内容,肯定还是需要交互,然后吧坐标点返回出来,所以还需要写一个算法类。主要可能就是这些,至于Point等这些辅助类,有需要的话就自己设计一下。原创 2023-11-24 13:42:49 · 963 阅读 · 0 评论 -
3.6 主界面——信息窗
主要就是建一个panel,实现下面的两个方法,后面需要打印的时候,就通过单例找到这个窗体的实例,然后调用者两个方法,就可以输出在这个信息窗了。其实我的想法就是一个信息暂时的窗口,比如后面跑算法的时候,凡是需要println的地方,都可以输出到这个信息窗来,这样方便检查。写一下信息窗,信息窗的实现主要是为了很好的打印需要打印的信息,可能这些信息会需要向日志一样输出。到这里 主界面其实就算是搭好了,后面就开始实现一些例子吧。原创 2023-11-24 11:25:35 · 334 阅读 · 0 评论 -
3.5 主界面——文件树
在gui的包里建一个DocumentTreePanel的类;因为暂时也没实现什么功能,所以就比较简单的加几个节点看一下就行了。本质上就是在一个panel中加tree,然后通过添加节点和节点的响应来实现的。原创 2023-11-24 10:54:46 · 333 阅读 · 0 评论 -
3.主界面-主工作区
主工作区主要还是一个panel,主要还是用javadocking将主工作区划分为四个部分,也就是四个小块,左上角放文件树,左下角暂时保留,右边中间是主工作区内容,右下放信息窗口,有什么需要打印的信息都可以放在右下角。原创 2023-11-24 10:51:53 · 336 阅读 · 1 评论 -
3.3主界面——初始化菜单栏和工具栏
因为工具栏可能会用到combobox和button这些控件实现,所以我们去建一个tool的包,实现一些这些可能用到的组件。其实就是继承后重写了一下样式,然后写了一下响应时间,如果不嫌难看,用自带的也是可以的。虽然现在菜单栏和工作栏还没有什么功能,不过还是初始化一下把,放在上面装装样子,后面需要通过他们实现一些功能的时候再来实现吧。因为暂时也没设计这部分的功能,所以随便写写吧。原创 2023-11-24 10:23:58 · 376 阅读 · 1 评论 -
3.1 主界面——单例服务
首先写一个SingleInstanceKey的类,类似于一个枚举类型吧,把可能用到的单例的Key放进去,以后就可以按key值访问。想来主界面、主工作区、文件树和信息窗这些,以后多半也是全局唯一的,所以先去做一个单例,以后通过单例的注册就可以在需要的时候很方便的找到对应的内容。然后写一个SingleInstance类用来存放单例,相当于字典,在生成单例是就放进来,以后要用的时候就从这里取。先去工程下,建一个QHService的模块,然后建一个SingleService的包。原创 2023-11-24 09:36:15 · 302 阅读 · 1 评论 -
3.主界面
就参照eclipse做一个简单的主界面吧,在前面登录验证完成的基础上进入主界面,主界面大致应该有菜单栏、工具栏、主工作区、文件树、信息栏,然后还保留一个区域备用吧,以后看能扩展些什么,如果是加载地图什么的,也许可以做一个鹰眼的功能区。菜单栏和工具栏暂时还没想好具体做点什么,不如就从文件树和主工作区开始做吧。原创 2023-11-24 09:25:07 · 470 阅读 · 1 评论 -
2.5 登录界面——短信验证服务
前面Redis连接搭好了,去redis的命令里或者客户端里把暂时测试的几个数据存进去,我在登录界面初始化的时候写了个函数,会吧用户名、密码等读出来自己填入(算是保存用户名密码的操作),不然测试阶段会疯掉。首先我们要去叮咚注册一下,然后得到自己的apikey,然后要去申请一个验证码的模版,等待审批(不花钱有十条的试用,所以后面我就注释掉这个了,直接用redis的存值过)现在就是需要写一个短信验证的服务,将验证码发给填入的手机号并且存入数据库,这样就可以进行一致性检验了。建一个SendMsgUtil类。原创 2023-11-23 10:28:05 · 35 阅读 · 0 评论 -
2.4 登录界面——redis搭建响应和验证的内容
我是想用Redis搭建响应和验证的内容,毕竟这种非关系型数据库用起来比较方便,把用户名密码等内容存在里面,当然现在就我一个人的信息,然后打算用叮咚搭一个验证码的服务,服务产生的验证码也存到redis的个人信息里去,然后验证用户手机获取到的验证码输入的内容是否一致,然后登录界面的验证内容就算做完了。建一个QHRedisServer的模块,然后建一个JedisServer的包,建一个JedisConnectionFactory的类,这样通过连接池连接redis,不用不停的创建和销毁,应该会节省不少开销吧。原创 2023-11-23 10:02:17 · 18 阅读 · 0 评论 -
2.3 登录界面——加控件
主要就是加Swing组件,还没有增加任何响应功能。先把登录界面要用的控件加进去,主要用到这些。原创 2023-11-23 09:42:10 · 43 阅读 · 0 评论 -
2.2 登录界面——加一个背景吧
首先准备一张壁纸放在Resource\Image\BackGround文件夹下吧(这个过程还是挺不好弄的,找一张好看的图可不简单= =)然后将BackGroundPanel加到登录界面中。然后在QHgui中写一个背景版的panel。原创 2023-11-22 18:52:25 · 30 阅读 · 0 评论 -
2.1登录界面-先吧界面搭起来
首先把界面搭起来再说吧,现在用的是笔记本,但是回家写可能用台式机,两个还是区别很大的,不希望维护和更新的时候,为界面尺寸和适应的问题挠头,所以先想好界面和屏幕的自适应问题。在QHEntrance下建一个QHgui的包,用来存放主界面相关的类。然后建一个QHLoginWindow类作为登录界面。原创 2023-11-22 18:10:59 · 14 阅读 · 0 评论 -
2.登录界面
这部分的想法就这么多了,毕竟也不是主体,能看就行。我之前想做得炫酷一点的,比如登录窗的背景是动态的,但是用swing好像要实现有点麻烦哦,算了,就不折腾了,还是尽快往前走吧,不要太在意细节。希望做一个简单的登录界面吧,一般的软件部都有一个欢迎界面嘛,我打算用Swing的组件搭一个,相对比较简单,估计就是用户名,密码,手机号和验证码之类的。原创 2023-11-22 17:26:25 · 78 阅读 · 0 评论 -
1.5 开始干活——从main开始
两个工具类都实现了,现在就可以在main函数中加一个LienceCheck的函数了,用来校验一下本地是否有license,内容是否符合。到这里我们的入口函数就算写完了。原创 2023-11-22 17:19:35 · 19 阅读 · 0 评论 -
1.4 开始干活——从main开始
然后就涉及到文本内容的读取了,但是想来这种操作在编程里不会少,所以还是写个工具类吧,希望以后只用告诉它读取文件的url,它就可以帮忙返回或写出文本内容。还是在上一章的包里建一个STxtFileHelper类。前面实现了路径的辅助类,这样以后访问项目的相关路径就会很简单了,现在我们就去User下建一个License文件夹,然后建一个license.txt文件,做一个简单的校验测试吧。不想做什么加密解密的事情,就走个形式,保留,如果以后想做多复杂,可以自己去尝试。这样文本文件的读取就很方便啦。原创 2023-11-22 17:08:35 · 13 阅读 · 0 评论 -
1.3 开始干活——从main开始
既然是项目文件的校验,肯定涉及到路径的访问和文件的读取吧,所以干脆先去QHBaseBasic中写两个类吧,这样以后遇到类似的问题就可以直接调用,会方便很多(一个程序肯定涉及到很多的路径访问和文件读取);先写路径的问题,在之前的QHBasic同级建一个QHHelper的包,写第一个工具类QAbsolutePathHelper。接下来,写一个函数,做一个简单的本地的license校验,不加密的文本校验吧,一个成熟的应用程序应该这样不是嘛,虽然形式比较简单,但是还是走一下比较好。分布访问三个函数后的返回结果。原创 2023-11-22 16:58:50 · 22 阅读 · 0 评论 -
1.2 开始干活——从main开始
我希望我的程序是一个X64的平台下运行的,然后现在是一个开发模式的阶段嘛,定义这样的一个常量,作为main函数的传入参数。利用开发者模式的设定,也可以屏蔽测试阶段需要的代码,但是发布版本其实不需要的内容。在QHEntrance下建一个QHApplicationEntrance的包,建一个QHBaseEntrance的类作为这个程序的一个入口,然后hello world一下,运行一下(这是一个执念啊)。开发者模式的设置,也只是为了初始化这个常量,为了后续的使用,所以这里的return其实是不正确的。原创 2023-11-22 16:23:18 · 20 阅读 · 0 评论 -
1.1开始干活——main函数
然后建了两个文件夹,用eclipse的话应该就是对应两个项目了,但是我想用idea写,虽然初学很多都是Eclipse起手,但是还是要学着用新的工具增加效率,idea被更多人接受也不是没有原因的。初步想法是这样的,在QHEntrance写我的主程序入口和主程序的GUI相关的内容,在QHBaseBasic中写主程序可能会依赖到的一些小工具吧,这样会让项目看起来整洁一些,不然兴之所至地写,都挤在一起,后面可能会很难区分和查找。首先去我的Gitee建了一个叫QHBase的仓库,然后克隆到本地。原创 2023-11-22 15:54:28 · 21 阅读 · 0 评论 -
1.从这里出发
这半年的java是结合着SWing在学,虽然身边常有人说什么什么框架什么什么技术的,如果我有兴趣学下去,应该也会去看一看的。但是现在就想做一个应用程序,当作是自己学习的一个base,当然我希望它保持一定的扩展性,因为慢慢学,总是内容越来越多,所以能往上面继承是最好的了。有一天,它肯定也不能满足需求,那就到时候再说吧,但是不希望时时刻刻都会想着把它重写,所以从一开始就认真想想,它该是怎么样的。然后想想自己的学习路线,可能会用到哪些东西,接触到哪些东西,是希望学习的时候能在这里测试的,我想那样也不错。原创 2023-11-22 15:26:44 · 16 阅读 · 0 评论