【IT168 技术文章】
WWJ SDK 是一种构建在 Java OpenGL (JOGL) 扩展之上的 3D
图形地球仪。WWJ 类层次结构的核心是 GLCanvas 的子类 WorldWindowGLCanvas。而 GLCanvas 是一个
Abstract Window Toolkit (AWT) 组件。
WWJ 对 AWT 的依赖性对于想在 Eclipse
应用程序中使用 WWJ 的 GIS 开发人员来讲是一个障碍。您可能知道,Eclipse 使用了 Standard Widget Toolkit
(SWT),而 SWT 与 AWT 不兼容。而且,AWT 和 JOGL 紧密集成,这使得很难从 AWT 移植到 SWT。
进入 SWT/AWT 桥梁
SWT 因能够快速构建可伸缩和强大的客户端应用程序而迅速成为一种顶级窗口工具包。SWT 和 AWT/Swing 都在争当 Java
用户界面开发的权威。由于它们各有利弊,Eclipse 基金会意识到有必要构建一座允许在 SWT 中嵌入 AWT/Swing 组件的
SWT/AWT 桥梁。从 Eclipse version 3.0 开始,这座桥梁就已成为 SWT 的一部分。这个的 API 位于
org.eclipse.swt.awt 包中。
SWT/AWT 桥梁是通过 SWT 将基于 AWT 的 World Wind 3D Globe 嵌入到 Eclipse 应用程序中所需的关键组件。
WWJ 3D Earth 的 Eclipse 视图
借助 SWT 中已存在的 SWT/AWT 桥梁,可以轻松地将 WWJ 3D Eart ......
public class VariableParameter {
public static void main(String[] args) {
System.out.println(add(1,2));
System.out.println(add(1,2,3,4));
}
public static int add(int x,int...args){
//是3个点,args必须是最后、一个参数即args后面不能再有其他参数
int sum = x;
for(int i=0; i< args.length ; i++){
sum = sum +args[i];
}
return sum;
}
}
输出的结果:
3
10
......
语法:
for ( type 变量名:集合变量名 ) { … }
注意事项:
迭代变量必须在( )中定义!
集合变量可以是数组或实现了Iterable接口的集合类
举例:
public class AdvancedFor {
public static void main(String[] args) {
System.out.println(add(1, 2));
System.out.println(add(1, 2, 3, 4));
}
public static int add(int x, int... args) {
int sum = x;
for (int i : args) {
sum = sum + i;
}
return sum;
}
}
输出的结果:
3
10
......
用一个例子来说明:
在程序中规定交通灯的取值只能是RED,GREEN,YELLOW取其他值就会报错,并且还能根据当前颜色知道下个颜色.怎么实现??
一. 用普通类来实现
public abstract class TrafficLamp {
public TrafficLamp() {}
//取得下个灯
public abstract TrafficLamp nextLamp();
//内部类实现覆写
public final static TrafficLamp RED = new TrafficLamp(){
@Override
public TrafficLamp nextLamp() {
return GREEN;
}
};
public final static TrafficLamp GREEN = new TrafficLamp(){
@Override
public TrafficLamp nextLamp() {
return YEllOW;
}
};
public final static TrafficLamp YEllOW = new TrafficLamp(){
@Override
public TrafficLamp nextLamp() {
return RED;
}
};
@Override
public String toString() {
if(this ==&nb ......
override是覆写,对应于OO编程的继承特性,意思就是在子类中重写父类中的方法;
overload是重载,对应于OO编程的多态特性,意思就是在同一个类中同样名称的多个方法, 这多个方法之间的区别在他们的参数列不同。
例如:
public interface UserDao {
public void save();
}
public class Override_Overload implements UserDao{
@Override
public void save() {
// TODO Auto-generated method stub
}
//以下三中方就是overload是重载
public int find(String name){
return 1;
}
public int find(String name,Long id){
return 1;
}
public int find(Long id){
return 1;
}
}
......
译注
:本文来自straight_talking_java@yahoogroups.com讨论组,已经是一年多前
的文章。Alan Williamson是Java Developers
Journal的编辑,下文来自他在IBM的一个消息来源。SWT和Swing的论争我见过不少,Netbeans和Eclipse的也同样多。译者翻译
此文并不是要激起什么争执,也不是支持哪一方(虽然我的确是站在SWT一边的),更不是要攻击Amy。我最重要的理由是,这是一篇有趣的文章。里面有内
幕、线人、公司政治、垄断巨头、美女、商界风云……足够拍一出电影。有趣,这就够了。不过此文反映了IBM对Swing的看法和SWT的由来,还是有一点
营养的。
要想弄清楚为什么一切都被弄得如此混乱,要从几年前只存在AWT的时候说起。SUN当时已经建立了一套基本的可移植控件
类,这些类映射到不同操作系统上的原生窗口组件(native widget),显然下一步应该继续增强这套模型,除了初始的CUA
92组件(文字、按钮等等),再继续加上表格、树、记事本、滑块等等……当时的AWT还满是漏洞,远不能称为可靠,还需要SUN的coder们去修补。
SUN的developer们如Graham和Otto总是习惯于公开把他们的bug归咎为操作系统的差异,比如“Windows和OS/2的焦点 ......