滚动条(JScrollBar) 因为滚动条要实现能够左右,上下移动.所以就要有相应的监听器,所以在当图形界面中有滚动条时,不要忘了在程序开头加上import java.awt.event.*;JScrollBar对象会产生一个AdjustmentEvent事件,所以要在程序中继承接口AdjustmentListener其监听器方法是adjustmentValueChanged(AdjustmentEvent e). 其属性有:orientation指定滚动条的方向 jsbHort=new JScrollBar(); jsbVert=new JScrollBar(); jsbHort.setOrientation(Adjustable.HORIZONTAL);//设置为水平滚动条 jsbVert.setOrientation(Adjustable.VERTICAL);//为垂直滚动条 jsbHort.addAdjustmentListener(this);//加上监听器 jsbVert.addAdjustmentListener(this);//同上 double value=jsbVert.getValue();//获得滚动条的当前水平滚动值 double maximumValue=jsbVert.getMaximum();//获得滚动条水平滚动最大值
分类为 'java' 的文章
只言片语–java中的文件读写
分类:Uncategorized, java on 2008-11-16 给我留言 »
在文件读写部分中,我们如果要读取格式化数据.可以使用DataInputStream,它是以俄国面向字节的I/O类,因此我们必须使用InputStream类,而不是Reader类,当然我们可以用InputStream以字节的形式读取任何数据(例如一个文件),不过.在这里我们用的是字符串,为了能将字符串转化成适用于ByteArrayInputStream的字节数组,String包含了一个可以将字符串转化为字节数组的getByte()方法。所以我们就持有了一个可传递给DataInputStream的InputStream。 try{ DataInputStream in3=new DataInputStream(new ByteArrayInputStream(s2.getBytes()));//s2是String类型的 System.out.print((char) in3.readByte()); }cacth(EOFException e) {System.out.println(“End of stream”);//此时我们是通过捕获异常来检测输入的末尾,但是使用异常进行流控制,被认为是对异常特性的错误使用 }
在java中不要求在方法中显式的声明Error和RuntimeException,如果要抛出其他异常必须提前声明我们可以用throws来声明抛出的异常,当要抛出多个异常时,用逗号隔开. 注意: 一个方法是不能抛出一个没有声明的异常. 抛出异常: 在声明了异常的方法中.如果出现了异常,就可以抛出一个异常对象例如: throw new TheException(); 等价于TheException ex=new TheException(); throw ex;
不同语言和系统的垃圾回收机制是不同的。 C语言实际没有垃圾回收机制,一切依赖程序员和操作系统。如果编写的程序忘记释放内存而又长时 间的运行,麻烦就来了。而如果编译器本身的库函数有问题,那就更可怕了。Borland的C/C++编译器经常有这个问题,业界很多人都知道的,因此很少 有人敢用它来做大的软件。 C++语言在类的析构函数中提供垃圾回收,由程序员决定释放那些资源,当程序调用某个类的析构函数时,垃圾回收工作执行并完成。这实际上任然是程序员控制的方式。 Java则提供了独立的垃圾回收机制,它无需程序员的介入,由Java虚拟机来决定何时进行垃圾回收。当然程序员在一定情况下可以强制垃圾回收机制立即工作,方法是调用system.gc下面的几个方法(具体查书)。 具体的实现分为两大部分,一部分是如何确定哪些是垃圾,另一部分是如何回收。 在 第一部分中有两大类方法,第一种是所谓的引用计数法,引用计数为零的自然是垃圾了,这种方法很简单,但是无法处理相互引用的问题;第二种是所谓的顺藤摸瓜 法,因为Java所有的东西无非两大类,目标和非目标,目标存在堆中,非目标存在栈中,栈的先进后出方式决定了不会有垃圾问题,而所有的目标都是 Object的某代后代。从头摸起,就可以确定谁是好人(有人要的,有领导的),谁是坏蛋(没有人要的,没有领导的),将坏蛋处理就是了。
java中读取配置文件的参数可以使用ResourceBundle来实现: connectDB.properties文件如下: database.serverurl=jdbc:sqlserver://localhost:1433;databaseName=laberguarantee datebase.username=sa datebase.password=pimm 以下是连接数据库时读取参数的操作 ResourceBundle rb = ResourceBundle.getBundle(“connectDB“);//默认的connectDB.properties是放置在WEB-INF/classes下面的 url= rb.getString(database.serverurl); usrname= rb.getString(database.username); password=rb.getString(database.password);
在网上看了一个朋友的博客,里面介绍了关于静态变量的初始化问题,本来以为自己很明白了,可是自己写出结果以后发现与运行结果不同,于是上网搜了一些加载时初始化的顺序的例子,整理如下: 每个类加载的时候静态域先于非静态域,这与代码所在位置先后没有关系。 类加载时先初始化变量然后是函数/方法 无论new多少个对象,静态域只有一个,即只初始化一次,以后的new对象都不在执行静态域的代码。 当碰到继承的关系时,加载顺序是:父类静态成员,子类静态成员,父类静态成员,父类的成员变量,父类的构造方法,子类的成员变量,子类的构造方法。当再用这个类new一个对象的时候,静态的部分就不会再执行了,因为静态的部分时类中所有的实例所共享的,他在整个虚拟机的生命周期内只执行一次。