开发者社区> 算精通> 正文

Java 笔记07

简介: Module  10 Canvas组件:画布,可以实现动画操作。 TextArea:文本域。 在单行文本域中回车会激发ActionEvent。 用CheckBoxGroup实现单选框功能。 Java中,单选框和复选框都是使用CheckBox实现。 菜单:new MenuBar(),MenuBar表示菜单条。 菜单中的每一项为MenuItem,一般级联菜单不应该超过三级。 练
+关注继续查看

Module  10

Canvas组件:画布,可以实现动画操作。

TextArea:文本域。

在单行文本域中回车会激发ActionEvent。

用CheckBoxGroup实现单选框功能。

Java中,单选框和复选框都是使用CheckBox实现。

菜单:new MenuBar(),MenuBar表示菜单条。

菜单中的每一项为MenuItem,一般级联菜单不应该超过三级。

练习:

设计一个计算器:注意设置一个boolean值(append)来判断输入数字是位于第一个数的后面还是属于输入的第二个数。

设置一个变量来存放“+”,点完运算符后,将append设置为false。

String number1

Char  operator 存放运算符。

 

Module  11 Swing

AWT是Java最早出现的图形界面,但很快就被Swing所取代。

Swing才是一种真正的图形开发。

AWT在不同平台所出现的界面可能有所不同:因为每个OS都有自己的UI组件库,java调用不同系统的UI。

注意AWT为重量级组件,相当消耗资源,且不同系统的组件可能不同。因为这个问题使得AWT开发的软件难以作到跨平台。
更为要命的是:不同OS的组件库都存在BUG。必须多种平台进行测试,并且AWT的组件库并不丰富。

为解决以上问题,SUN和IBM以及NETSCAPE联合开发出JAVA基础类包Swing:注意JAVA的基础类以Swing为核心。

注意引用:javax.swing.*;javax表示JAVA的扩展。

 

我们在学习JDBC的时候会过度到J2EE。

 

在Swing的组件中,基本上都是在AWT组件的名称前面加“J”。

一般情况下,除了Choise等组件:

importjavax.swing.*;好要加上:import java.awt.*以及import java.awt.event.*。

Swing与AWT的最大区别是Swing为JAVA自身的组件。已经不是对等实体,与底层的OS无关。

(JBUILDER就是使用Swing写的)

 

Swing与AWT在事件模型处理上是一致的。

Jframe实际上是一堆窗体的叠加。

Swing比AWT更加复杂且灵活。

在JDK1.4中,给JFRAME添加Button不可用jf.add(b)。而是使用jf.getContentPane().add(b)。

content是先申请面板。不过在JDK1.5中可以使用add.。

Jpanel支持双缓冲技术。

在Jbutton中可以添加图标。

JscrollPane可以管理比屏幕还要大的组件。

TextArea只有装入JscrollPane中才能实现滚动条。

JeditorPane用于显示浏览器。

注意:Tabbed Panel与Border的比较。

进度条:ProgressBar。

JcomboBox:下拉菜单:在AWT中同类组件是choice。

JlistPanel:选择列表

BorderPanel:设置边框

JsplitPanel:可将容器分为两个部分,其中一个部分有Jtree。

TextBox:也是一种新的容器,可以设置组件的间距。

TextFileChoose:文件选择器。

ColorChoose:颜色选择器

Module 12  Applet

Applet为Panel的子类

Applet是java的自动执行方式(这是它的优势,主要用于HTML)。

工作四种语法:init(),start(),stop(),destory()。

Swing中有一个Japplet,如使用Swing组件。

Applet消亡的原因:

①java为安全起见对Applet有所限制:Applet不允许访问本地文件信息、敏感信息,不能执行本地指令(比如FORMAT),不能访问初原服务器之外的其他服务器。

①  IE不支持新版本的Applet。

Applet的优势:

网络传输,自动下载。

Application的优势:没有执行限制。

WebStart:可在网络传输,并且在本地无限制。因此前景光明。

 

练习:

使用Swing实现一个界面,分为上下两个部分,南边为JtextField组件,可编辑,上面为JtextArea组件,不可编辑,在JtextField组件输入字符,按回车,就可以将内容输入到JtextArea组件。(AREA区域可以滚动)

>Object�Xa>�o����b>。它是JAVA体系中所有类的父类(直接父类或者间接父类)。

 

此类中的方法可以使所的类均继承。

 

以下介绍的三种方法属于Object:

(1)  finalize方法:当一个对象被垃圾回收的时候调用的方法。

(2)  toString():是利用字符串来表示对象。

当我们直接打印定义的对象的时候,隐含的是打印toString()的返回值。

可以通过子类作为一个toString()来覆盖父类的toString()。

以取得我们想得到的表现形式,即当我们想利用一个自定义的方式描述对象的时候,我们应该覆盖toString()。

(3)equal

首先试比较下例:

String A=newString(“hello”);

String A=newString(“hello”);

A==B(此时程序返回为FALSE)

因为此时AB中存的是地址,因为创建了新的对象,所以存放的是不同的地址。

 

附加知识:

字符串类为JAVA中的特殊类,String中为final类,一个字符串的值不可重复。因此在JAVA VM(虚拟机)中有一个字符串池,专门用来存储字符串。如果遇到String a=”hello”时(注意没有NEW,不是创建新串),系统在字符串池中寻找是否有”hello”,此时字符串池中没有”hello”,那么系统将此字符串存到字符串池中,然后将”hello”在字符串池中的地址返回a。如果系统再遇到String b=”hello”,此时系统可以在字符串池中找到 “hello”。则会把地址返回b,此时a与b为相同。

 

 

Stringa=”hello”;

System.out.println(a==”hello”);

系统的返回值为true。

 

故如果要比较两个字符串是否相同(而不是他们的地址是否相同)。可以对a调用equal:

System.out.println(a.equal(b));

equal用来比较两个对象中字符串的顺序。

a.equal(b)是a与b的值的比较。

 

 

注意下面程序:

student a=new student(“LUCY”,20);

student b=new student(“LUCY”,20);

System.out.println(a==b);

System.out.println(a.equal(b));

此时返回的结果均为false。

 

以下为定义equal(加上这个定义,返回ture或false)

public booleanequals(Object o){

  student s=(student)o;

  if(s.name.equals(this.name)&&s.age==this.age)

else returnfalse;

}如果equals()返回的值为

 

以下为实现标准equals的流程:

public booleanequals(Object o){

  if (this==o) return trun;  //此时两者相同
  if (o==null) return false;

  if (! o instanceof strudent) returnfalse;  //不同类

  studeng s=(student)o; //强制转换

  if(s.name.equals(this.name)&&s.age==this.age) return true;

else returnfalse;

}

 

以上过程为实现equals的标准过程。

 

 练习:建立一个employee类,有String name,int id,doublesalary.运用getset方法,使用toString,使用equals

 

封装类:

JAVA为每一个简单数据类型提供了一个封装类,使每个简单数据类型可以被Object来装载。

除了int和char,其余类型首字母大写即成封装类。

转换字符的方式:

int I=10;

String s=I+” ”;

Strings1=String.valueOf(i);

 

Int I=10;

IntergerI_class=new integer(I);

 

看javadoc的帮助文档。

附加内容:

“==”在任何时候都是比较地址,这种比较永远不会被覆盖。

 

程序员自己编写的类和JDK类是一种合作关系。(因为多态的存在,可能存在我们调用JDK类的情况,也可能存在JDK自动调用我们的类的情况。)

注意:类型转换中double\interger\string之间的转换最多。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
进阶面试皆宜!阿里强推Java程序员进阶笔记,差距不止一点点
程序员要如何成长这个问题,一直是各大网站、论坛的热点。对此网络上众说纷纭,一千个读者里面就有一千个哈姆雷特。LZ觉得想要让个人技能成长速度,大于公司规模或业务的成长速度,不断优化自己,成为一名“不错”的程序员主要需要掌握以下学习方法与实战技巧。
13 0
最壕逆天改命:18名Java程序员凭阿里P8笔记,同时斩获大厂offer
上高中时由于看了一本《坏蛋怎么练成的》从此一发不可收拾,对小说的痴迷渐渐成了病态,上课看下课看,成绩一落千丈,还好高三幡然醒悟勉勉强强上了一个“野鸡”二本,学了所有男生都喜欢的计算机专业;
32 0
阿里P7架构师,耗时十年整理的Java飞升笔记,差距不是一点点
这个问题就不用假如了,我本身从事Java开发已经十年了,去年因为疫情原因导致公司需要断臂求生,熟悉的那些小伙伴们相继离开,心中五味杂陈,思前想后决定离开这个呆了五年的地方。在猎头的引荐下,最终选择了阿里;
203 0
牛客java基础刷题笔记(三)
当你创建一个新的实例对象时,它会得到一块新的内存空间。但是类中的静态成员变量是所有对象共有的,也就是在一片属于类的存储空间中,被所有对象共有。 servlet在多线程下其本身并不是线程安全的。 如果在类中定义成员变量,而在service中根据不同的线程对该成员变量进行更改,那么在并发的时候就会引起错误。最好是在方法中,定义局部变量,而不是类变量或者对象的成员变量。由于方法中的局部变量是在栈中,彼此各自都拥有独立的运行空间而不会互相干扰,因此才做到线程安全。 JDK提供的用于并发编程的同步器 Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源
11 0
hadoop3自学入门笔记(3)-java 操作hdfs
hadoop3自学入门笔记(3)-java 操作hdfs
25 0
「月光宝盒」JVM研究系列「技术总结笔记」Java虚拟机垃圾回收认知和调优的"思南(司南)"【下部】
「月光宝盒」JVM研究系列「技术总结笔记」Java虚拟机垃圾回收认知和调优的"思南(司南)"【下部】
57 0
「月光宝盒」JVM研究系列「技术总结笔记」Java虚拟机垃圾回收认知和调优的"思南(司南)"【上部】
「月光宝盒」JVM研究系列「技术总结笔记」Java虚拟机垃圾回收认知和调优的"思南(司南)"【上部】
60 0
Java基础while循环02笔记
Java基础while循环02笔记
24 0
Java基础while循环01笔记
Java基础while循环01笔记
16 0
+关注
算精通
北京阿里云ACE会长
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Java工程师必读手册
立即下载
Java应用提速(速度与激情)
立即下载
Java单元测试实战
立即下载