RSS
热门关键字:
当前位置 : 主页>编程开发>java编程>入门>列表

浅谈Java桌面应用程序开发

来源:我要研发网 作者: 时间:1970-01-01 点击:



  Java对于服务器,个人电脑和移动设备来说是一项伟大技术.由于需要java跨平台特性,因此java在服务器和移动设备方面应用是非常成功。但java在个人电脑应用方面情况和在服务器及移动设备方面应用有所不同,但是这很快就会有所改变,至少比你想象得要快。在这篇文章中,我会分析一下java在桌面环境中应用将怎样得到提升,然后具体说一下java GUI(用户图形接口)三个主要工具:AWT, Swing, 和SWT.。在下文中,我将会开发一个完整java桌面应用程序. 字串8

  Java与桌面端

字串1

  现在,流行桌面平台要数Windows、Mac、and Linux了。但它们不是十全十美,Windows主宰着桌面操作系统市场,其上有巨大应用和开发群体,但它昂贵且有许多安全漏洞。Linux有着稳固基础,它是开源软件,比Windows更可靠。Macs非常容易操作且不是黑客目标,但与Windows和Linux比起来,Mac硬件和软件可选余地非常有限。公司和个人选择他们操作系统基于许多因素。花费少且安全性高是首选因素,这导致一些组织从Windows 系统转而选择Linux。对许多用户来说,可用性及对原有应用程序支持是非常重要因素,这意味着Windows 将继续享有巨大市场。Mac有其自己忠诚用户,这使得苹果机仍然可以存活,Linux 在桌面流行及Mac成功创造了多样性,这种多样性正是Java需要,这种多样性使得Java在桌面有举足轻重地位。

字串2

  跨平台支持

字串8

  Java 运行于所有相关操作系统,包括Windows、 Mac和Linux。对于任何组织,他想把现有应用从一个操作系统移植到另一个操作系统而不用做太多改动,那么Java正是他们首选桌面开发平台。或许用微软可视化工具很容易构建.NET应用,但是这将使你被绑定在了Windows平台上了。 很多人也许想立刻用Linux 代替Windows 从而避免由微软件操作系统漏洞带来问题。用户不能容忍问题之一是当从Windows移植到Linux带来巨大费用。如果你应用程序用Java构建,你就没有了这些问题,Java图形用户界面看上去会跟你用操作系统一样,而并不需要做什么改动。 假如有一天又有一种桌面操作系统出现话,java 是个安全赌注,因为它现在能够运行在Windows和Linux 上,那么可以推测它也可以运行在将来可能出现操作系统上,这些操作系统可能或迟或早地由微软,或是开源社区,或是其它人开发出来。

字串1

  丰富特征 字串3

  最初,Java只有非常有限一些特征去构建图形用户界面。思想就是用平台无关Java应用程序接口打包不同操作系统本地图形用户界面,称之为抽象窗口工具。仅有普通部件如文件域、文本区、选择框、单选按钮、列表框和按钮被AWT支持,图形和图像特性支持非常有限,也就是说,只足够构建简单applet程序。 认识到需要更高级图形用户界面组件和图形能力,Sun公司开发了Swing,Java 2D,Java 3D,图像输入/输出,Java高级图像(JAI)和很多其它。这些中一些窗体组件现在已经是Java 2标准版(J2SE)里一部分,并且其它一些扩展必须和你应用程序打包在一起。例如Swing、Java 2D、图像输入/输出都是Java核心API,随着Java开发工具包(JDK)和Java运行环境一起提供。 字串9

字串8

让我们不要忘了J2EE平台。如果你开发服务器端应用程序并且需要丰富图形用户界面,那么你毫无疑问应该选择Java。这允许你把服务器端一些代码移到客户端,反之亦然。例如:一个项目可能开始是基于WEB和图形界面,在某些时候,用户可能要求图形元素不能在HTML中实现,如果你选择java做客户端应用,那么你可以重用这些当初用来做服务器端代码。如果你用远程调用,一些类会真正地实现服务器和客户端共享。通过页面服务器,Java桌面应用也能够和其它Java 或非Java应用程序通信,如CORBA, TCP/IP,或是 HTTP。
字串2

  Java图形界面工具

字串3

  Java有三个主要图形界面工具:AWT,Swing和SWT。Swing 是构建java图形界面标准API(应用程序接口),一些AWT类由Swing基础而来。SWT是一个非常有前途窗体工具,由IBM资助。但是事实上,这三者相互补充,他们满足不同需求。

字串6

  AWT

字串9

  抽象窗口工具集为简单applet程序设计,它不适宜用来构建丰富桌面图形界面。但是从开始被介绍,它至少有一个思想就是布局管理,它负责为组件找到一个放置位置,这种机制是必需,因为GUI组件在不同操作系统中有不同尺寸。 现在, AWT扩展了组件模型和事件处理机制(由JavaBeans说明定义),新图形API(称为Java 2D),支持剪贴板和拖拉操作,打印,准入,和新GUI工具Swing,所有这些都归到Java基础类中(JFC)。 Swing Swing是曾经开发最复杂GUI之一。它有一套完全组件从按钮到文件域到表格,树型和文件编辑器。这些组件不依赖于操作系统本地部件,而是用原始图形像直线、矩形、文字画出。这种画代表感观插件,它能够模仿本地感观。 Swing也有平台无关外观称为"Metal"。 Swing结构由MVC模式得到启发,这里在屏幕上视觉GUI组件和支持数据模型对象之间有一个明显分隔,在GUI和数据层之间通讯基于事件。在最初Swing版本中有许多错误并且有执行问题,这减慢了接受它速度。Swing最大问题是被从事于并且许多人相信它是为开发桌面应用而准备。今天,有许多基于Swing开发商业产品,包括大多数Java集成开发工具,我所喜欢集成开发工具是Jbuilder,它速度相当快。

字串4

  SWT 字串7

  SWT是IBM为它Eclipse集成开发环境而开发图形用户界面工具。SWT可以在Eclipse环境外使用,而且提供对操作系统本地图形用户界面直接访问。因此,基于SWTJava应用程序拥有本地图形用户界面并且可以和本地别应用程序和部件集成在一起。 假如你桌面应用程序产生HTML报表,你想把它显示给用户看。你可以使用Swing去浏览简单HTML文档,但这不是一个理想解决方案。最是在你应用程序里提供IE或者Mozilla浏览器引擎。SWT社区现在正在设计浏览器API,这些API可以让你产生基于IE或者MozillaHTML窗口。 SWT现在可以在AIX, HPUX, Linux, QNX, Solaris, and Windows下面运行。Mac OS X is 也在进行之中

字串2


字串7

  误解与Bug

字串6

  对于java/Swing一直有着误解,诸如:Java/Swing太慢了,或者是Java/Swing需要更多内存。Swing也许在老式奔腾cpu而且只有32m内存运行JDK1.2运行起来却是很慢。但是如果在PIII级别CPU有着256mb内存,运行JDK1。4环境是足够快。对于一个应用程序来说鼠标在1毫秒和在10毫秒反映区别,对于使用者来说看起来是,没什么区别。Java在企业级数百人,上千人同时在线服务器表现。Java在对于有限资源移动设备上表现也是很出色。那为什么Java不能成为很桌面应用程序呢?以我观点看,Swingbug比其运行速度慢这问题还严重。例如,如果你用是JDK 1.2,你将不能在表格(称为JTable)中输入%&'($#!q 等这些字符。这八个字符和箭头键及Home, End, Pgup, and Pgdn这几个键键值是相同。其中一个由JTable由到类调用了KeyEvent.getCharCode()方法代替KeyEvent.getKeyCode()。这个bug这JDK 1.3已经得到了纠正。你大概已经放弃过Swing,如果你是从用JDK 1.2Swing,你可能因为你不能在表格里输入q而恼怒。可能不幸是你正需要用Jtable开发一个Swing应用,你将花费许多时间从sunbug数据库中查找解决办法。但没有发现你需要(记住在那时Swing还是个新事物),你将花费更多时间去看Swing源代码和发展中工作区,经过了这个经历之后,很少有人很在另一个项目里再用Swing了,你工作区会像下面这样子:

字串2

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class WorkingTable extends JTable
{
 public static final boolean JDK12 = System.getProperty("java.version").startsWith("1.2");
 public void processKeyEvent(KeyEvent e)
 {
  if (JDK12)
  {
   char ch = e.getKeyChar();
   if (e.getID() == KeyEvent.KEY_TYPED && ((33 <= ch && ch <= 40) || ch == 'q'))
   {
    int anchorRow = getSelectionModel().getAnchorSelectionIndex();
    int anchorColumn = getColumnModel() .getSelectionModel().getAnchorSelectionIndex();
    if (anchorRow != -1 && anchorColumn != -1)
    {
     if (!isEditing())
      editCellAt(anchorRow, anchorColumn);
      Component editorComp = getEditorComponent();
      if (isEditing() && editorComp instanceof JTextField)
      {
       JTextField textField = (JTextField) editorComp;

字串3


       textField.setText(textField.getText() ch);
       return;
      }
     }
    }
   }
  super.processKeyEvent(e);
 }
}

  不幸是,Swing有许多像上面描述那样问题,一些问题很难解决,需要做大量工作。例如,Swing打开文件和保存文件对话框是基于称为JfileChooser组件,它部分执行了JDK 1.2和JDK 1.3(一些特性总是不能用,要创建一个新目录对大多数用户来是一个挑战)。我不知道为什么Sun需要几年时间直到jdk1.4中才完成JfileChooser。在JDK 1.4之前,你有两种选择:用这种破烂JfileChooser或是创建你自己文件选择框,Borland公司在他们JBuilder 4中做一个很文件打开对话框。然而,大多数开发者用是标准JfileChooser,给他们用户带来许多问题。有一件重要事情需要注意:可以像上面描述那个去创建工作环境,因为Swing源代码是可以得到。学习java源代码也能够让你成为更程序员并且让你理解工作在Java API内部机制。当你开发你自己习惯GUI组件,这点是有用

字串4


字串7

  总结: 字串4

  Java作为一种网络技术,为了在浏览器中能够运行小应用程序而发布,但是它从开始就有运行独立桌面应用程序能力。不幸是,AWT没有提供足够桌面端程序所需特性。Swing着手于解决这些问题,但是它有不少bug。今天,Java有构建大型桌面端应用程序能力并修复了bug。Java独有优点是“只写一次,到处运行“——在Windows, Linux, Mac和其它操作系统上运行Java代码能力。 字串8

字串9

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
相关文章