Java
shao15232_1
种树有两个最好的时间节点,一个是十年前,一个是现在!
展开
-
Java之坦克大战(四)---如何移动坦克
坦克绘制完成后我们要设置事件,来监听键盘上面对坦克的操作。然后做出相应的动作来移动坦克。比如上下左右移动。今天我们主要演示的是一个小球的运动。来替代坦克。上一章我们讲解了如何来监听事件的完整过程。事件源---事件传输---接收事件(处理事件)。我们要掌握的是对事件的具体处理,如何发生,如何传输,谁是接收,如何处理。然后在这个基础上我们来画一个JPanel,在这个JPan...原创 2019-11-16 22:29:51 · 1157 阅读 · 0 评论 -
Java之坦克大战(三)---监听事件机制上
在上一篇我们画好坦克后,如何让坦克移动呢?这里我们分为两步:第一部分 设置监听事件第二部分 对监听事件的处理。今天我们先讲一下监听事件的设置。首先监听事件需要有三个组成部分。第一 事件发生源。也就是产生事件部分。第二 信息的传输。也就是事件传输的载体。第三 信息的接收者。也就是监听者。借用一下韩顺平老师的讲课课件:这里我们举个例子说明事件...原创 2019-11-16 22:14:25 · 269 阅读 · 0 评论 -
Java之坦克大战(二)---坦克图形绘制
紧接着我们上一篇的坦克大战一,今天我们先画出一个坦克。如果直接用面向过程的思想来做的话,那么很容易就可以画出一个坦克。但是后面我们需要画出很多个坦克,所以我们要先把面向对象的思想设计好。我们的架构是Tank为一个父类,之后的我方坦克和敌方坦克都需要继承于这个类。父类的属性如下://坦克类class Tank{ //坦克的横坐标 int x = 0; //坦克的...原创 2019-11-13 23:10:09 · 2662 阅读 · 0 评论 -
Java之坦克大战(一)---绘图项目准备
学习了Java的UI绘图后我们现在可以先做一个坦克大战来练练手。(跟着韩顺平老师学习的,安利大家想学习的可以看看)今天主要是做准备工作,我们来先画一下基本的东西:1、直线(其实是线段)。2、椭圆(包括圆)。3、矩形(实心和矩形框)。4、图片显示。5、汉字显示。接下来我们正式开始:首先我们需要先新建一个类,这个类主要用来做我们放组件的面板。也是JPanel那...原创 2019-11-12 23:39:56 · 290 阅读 · 0 评论 -
Java布局管理器之插件(八)---JMenuBar、JMeun、JMeunItem
今天我们主要讲一下的是JMenuBar、JMeun、JMeunItem.先将一下层次:JMeunBar是树干,JMeun是树枝,(所以树枝可以再生树枝)JMeun里面可以嵌套使用JMenu。JMeunItem是树叶,也就是最终项。JMeunBar的介绍:JMeun的介绍:下面我们主要举例说明,如何编写一个TXT文档,没有加JScrollPane...原创 2019-11-10 22:46:09 · 968 阅读 · 0 评论 -
Java布局管理器之插件(七)---JTabbedPane
今天我们主要讲一下JTabbedPane这个控件。它是卡片布局,可以将JPanel放到卡片上面做成标签页的形式。接下来我们展示一个Demo以QQ2008界面为例子。(想做那个QQ界面都是可以的)首先我们看下JTabbedPane是继承自哪个类的:然后我们看下Java API对这个类的说明:接下来我们直接上代码,看下QQ登录界面如何实现的:/** * QQ 登录界...原创 2019-11-06 23:51:13 · 1441 阅读 · 0 评论 -
Java布局管理器之插件(六)---JTextArea
多行文本框 (JTextArea)今天我们主要演示JTextArea。使用说明如下,大家可以多看看说明文档下面我举例说明:/** * 测试 QQ对话框 * 多行文本框 JTextArea */package com.shunping;import java.awt.*;import javax.swing.*;public class Demo8_10 exte...原创 2019-11-01 21:40:09 · 543 阅读 · 0 评论 -
Java布局管理器之插件(五)---JSplitPane
JSplitPane是容器类组件,对窗体进行拆分。如果是分成左右两块,那么就是按水平方向拆分。如果是分成上下两块, 那么事按照垂直方向拆分的如果分成四块,那么就要先垂直(或者水平),然后再在分好的小块中水平(或者垂直)再分一次。每次只能分割一个框为两份。下面我们用JSplitPane做一个金山词霸的词典界面:/** * 金山词霸 * JS...原创 2019-11-01 14:39:10 · 348 阅读 · 0 评论 -
Java布局管理器之插件(四)---JComboBox、JList、JScrollPane
在图形用户界面编程中,我们常常会提供用户调查界面,这个时候我们会用到:1、下拉框组件 (JComboBox)2、列表框组件 (JList)3、滚动窗格组件 (JScrollPane)特别说明:一般来说,列表框组件 +滚动窗格组件是结合使用的。目的是让列表框中的选项可以有滚动条支持。下面我们举例说明:/** * 测试:JComboBox/JList/JScrollPane...原创 2019-10-31 14:29:19 · 419 阅读 · 0 评论 -
Java布局管理器之插件(三)---JCheckBox、JRadioBuutton
在图形用户界面编程中,我们常常会提供用户注册界面,这时候我们就会用到:1、复选框组件 (JCheckBox)2、单选框组件 (JRadioBuutton)特别说明:同一组单选按钮必需先创建 ButtonGroup ,然后把单选框组件放入到 ButtonGroup 中下面举例说明:/** * 测试:JCheckBox/JRadioButton */package com...原创 2019-10-31 14:25:13 · 231 阅读 · 0 评论 -
Java布局管理器之插件(二)---JTextField、JPasswordField、JLable
在图形用户界面编程中, 我们常常会提供用户登录界面, 比如登录到会员管理系统, 登录到工资管理系统、仓库管理系统等。这时候我们就会用到:1、文本框 (JTextField)2、密码框 (JPasswordField)3、标签 (JLable)下面我们举例说明:/** * 文本编辑,密码文本编辑框,标签 */package com.test1;import java.a...原创 2019-10-31 14:22:10 · 612 阅读 · 0 评论 -
Java布局管理器之插件(一)---JPanel
在图形用户界面编程中, 如果只是普通的组件布局, 我们用前面讲的三种布局管理器就可以解决,但在比较复杂的布局要求时,就需要使用布局管理器的组合使用。面板组件 (JPanel)JPanel :面板组件,非顶层容器,一个界面只可以有一个 JFrame 窗体组件,但可以有多个JPanel 面板组件 ,而 JPanel 上也可以使用 FlowLayout 、 BorderLayout 、 G...原创 2019-10-31 14:17:45 · 5139 阅读 · 0 评论 -
Java布局管理器之网格管理器(GridLayout)
GridLayout 布局, 听其名而知其意, 它将容器分割成多行多列, 组件被填充到每个网格中,添加到容器中的组件首先放置在左上角的网格中 ,然后从左到右放置其它的组件, 当占满该行的所有网格后,接着继续在下一行从左到右放置组件。注意事项1、组件的相对位置不随容器的缩放而变化,但大小会变化;2、所有组件的大小相同;3、可以通过 GridLayout(int rows,i...原创 2019-10-30 23:35:47 · 506 阅读 · 0 评论 -
Java布局管理器之流式管理器(FlowLayout)
今天这一讲我们主要讲 流式布局管理器。流式布局 FlowLayout-- 介绍FlowLayout 布局,按照组件的添加次序将按钮组件 ( 当然也可以是别的组件 ) 从左到右放置在容器中。当到达容器的边界时,组件将放置到下一行中。FlowLayout 可以以左对齐、居中对齐、以右对齐的方式排列组件。注意事项1、不限制他所管理的组件大小,允许他们有最佳大小2、当容器衩缩放...原创 2019-10-30 23:31:24 · 556 阅读 · 0 评论 -
Java布局管理器之边界管理器(BorderLayout)
在Java中布局管理器常用的有四种:边界管理器流式管理器网格管理器卡片管理器组件在容器 ( 比如 JFrame) 中的位置和大小是由布局管理器来决定的。所有的容器都会使用一个布局管理器,通过它来自动进行组件的布局管理。今天我们主要讲边界管理器。本例主要讲:边界布局 (BorderLayout) 将容器简单的划分为东南西北 5 个区域,中间区域最大。JFrame...原创 2019-10-30 23:27:32 · 1207 阅读 · 0 评论 -
Java泛型编程
泛型是 java se1.5 的新特性, 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种 参数类型可以用在类、接口和方法的创建中, 分别称为泛型类、泛型接口、泛型方法。java 语言引入泛型的好处是安全简单。在 java se1.5 之前, 没有泛型的情况下,通过对类型 Object 的引用来实现参数的“任意化”,“任意化” 带来的缺点是要做显式的强制类型转...原创 2019-10-29 13:38:39 · 172 阅读 · 0 评论 -
Java容器类的使用场景
总结一下容器:1、如果要求线程安全,那么使用Vector和Hashtable。2、如果不要求线程安全,使用ArrayList,LinkList,HashMap类。因为效率高。3、如果要求键值对,则使用Hashtable和HashMap。4、如果要求数据量很大,又要线程安全,则使用Vector。...原创 2019-10-29 10:38:27 · 383 阅读 · 0 评论 -
Java容器类之List和Vector的使用场景和区别
Vector和ArrayList:Vector和ArrayList也是容器的一个分支。Vector是同步的,线程安全的。ArrayList是异步的,非线程安全的。在默认情况下,当用来存放元素的数组超过了内部分配的长度的时候。ArrayList会按照原长度的50%来续加长度。Vector会按照原长度的一倍来增加长度。所以我们在操作数据量大的容器的时候,选用Vector。效率上...原创 2019-10-29 10:37:37 · 1106 阅读 · 0 评论 -
Java容器类之HashMap、Hashtable的使用和区别
这一篇我们主要来学习容器的Map类。我们学的是HashMap和Hashtable(注意t不能大写)。HashMap和Hashtable都可以存放类对象。用put存入,get取出。举例:Emp emp1 = new Emp("S001", "aaa", 1.2f);Emp emp2 = new Emp("S002", "bbb", 3.4f);Hashtable ht =...原创 2019-10-29 10:35:09 · 143 阅读 · 0 评论 -
Java容器类之List
Java容器类中包含有List,List也分为ArrayList、LinkList、Vector和Stack。这几个链表都有相同的特性。在方法上面的使用也是大同小异。ArrayList是属于线性表,元素时挨着放置的。LinkList是非线性表,和数据结构一样,是散列排放在内存中。透过指向下一个元素来连接起来的。Vector是一个向量,类似于队列,先进先出。Stack是栈,先进后...原创 2019-10-28 11:44:01 · 182 阅读 · 0 评论 -
Java查找算法之二分法查找
基本的查找方法有遍历,也就是我们常人所理解的。一个一个去查询比较。但这种方法比较耗时,成本较高,效率低下。今天我们讲解一下二分法查找。二分法查找的关键是,被查找的序列一定要是一个有序序列。如果是无序的序列,那么二分法就失去意义了。1、对序列进行拆分。按照对半原则,找到中间元素,然后设置为查找点 M。2、对要查找的数据和这个查找点M的值比较,确定要查找的区域是左半边还是右...原创 2019-10-25 11:38:00 · 223 阅读 · 0 评论 -
排序算法之合并排序
合并排序法 (Merge Sorting) 是外部排序最常使用的排序方法。主要应用场景是:若数据量太大无法一次完全加载内存,可使用外部辅助内存来处理排序数据,主要应用在文件排序。排序方法:将欲排序的数据分别存在数个文件大小可加载内存的文件中,再针对各个文件分别使用“内部排序法” 将文件中的数据排序好写回文件。再对所有已排序好的文件两两合并, 直到所有文件合并成一个文件后,则...原创 2019-10-25 10:09:57 · 2253 阅读 · 0 评论 -
排序算法之快速排序
快速排序 (QuickSorting) 是对冒泡排序的一种改进,由 C.A.R.Hoare 在 1962 年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。1、先从数列中取出一个数作为基准数...原创 2019-10-24 13:26:39 · 189 阅读 · 0 评论 -
排序算法之插入排序
插入排序 (Insertion Sorting) 的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表,开始有序表只包含一个元素, 无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。插入排序的算法code:class Inser...原创 2019-10-23 14:50:20 · 324 阅读 · 0 评论 -
排序算法之选择排序
选择排序 (Select Sorting) 也是一种简单的排序方法。它的基本思想是:第一次从R[0]-R[n-1] 中选取最小值,与 R[0] 交换,第二次从 R[1]-R[n-1] 中选取最小值,与 R[1] 交换,第三次从 R[2]-R[n-1] 中选取最小值,与 R[2] 交换, ... ,第 i 次从 R[i-1]-R[n-1] 中选取最小值,与 R[i-1] 交换, ...原创 2019-10-22 23:13:09 · 171 阅读 · 0 评论 -
排序算法之冒泡排序
冒泡排序 (Bubble Sorting) 的基本思想是:通过对待排序序列从后向前 ( 从下标较大的元素开始 ) ,依次比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后部移向前部 ( 从下标较大的单元移向下标较小的单元 ) ,就象水底下的气泡一样逐渐向上冒。因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,...原创 2019-10-22 22:37:14 · 80 阅读 · 0 评论 -
汉诺塔(HanoiTower)问题 Java求解
汉诺塔问题是大家学习C中递归调用的必备练习题。今天我们用Java的封装思想做一下。原题目:在Java中我们称之为迭代。解题思想是:1、当A只有一个盘子,那么把1号从A移动到C结束。2、当盘子个数大于1时,我们分两部分。最底下是n号盘子,上面的1到(n-1)号看做整体。 1、)我们把1到(n-1)从A移动到B。(这个时候B是过渡盘) 2、)这个时...原创 2019-10-17 23:14:42 · 343 阅读 · 0 评论 -
约瑟夫问题问题
约瑟夫问题也就是我们常见的丢手帕。约瑟夫问题:设编号为 1,2,...n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n) 的人 从 1 开始报数, 数到 m的那个人出列, 它的下一位又从 1 开始报数, 数到 m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。提示: 用一个不带头结点的循环链表来处理 Josephu 问题:...原创 2019-09-27 22:59:09 · 675 阅读 · 0 评论 -
Java中的访问修饰符
Java中对类,成员变量成员属性都需要有访问修饰符修饰。来控制外部的访问权限。上图是访问控制权限,一定要牢记。如果我们要使用其他包里面的类,跨包的时候需要用 import比如import java.util.* 就是引用java.util包下面的所有文件或者类。...原创 2019-09-25 21:22:14 · 55 阅读 · 0 评论 -
JDK 安装教程
首先下载好JDK。可以在官网现在是Oracle公司的官网,下载的版本为jdk-6u45-windows-x64.exe目前这个版本已经不做维护了。安装的时候一路点击 "next" 就好了。我把JDK和JRE安装在同一个文件下面。然后安装完成以后。设置一下Path: C:\APP\JDK_6U1_X64\JDK\bin如图加入到 用户的环境变量里面就可以了。 不...原创 2019-09-22 13:27:38 · 508 阅读 · 0 评论