Java桌面应用措施开拓简介
当前位置:以往代写 > JAVA 教程 >Java桌面应用措施开拓简介
2019-06-14

Java桌面应用措施开拓简介

Java桌面应用措施开拓简介

副标题#e#

Java对付处事器,小我私家电脑和移动设备来说是一项伟大的技能.由于需要java的跨平台的特性,因此java在处事器和移动设备方面的应用长短常乐成的。但java在小我私家电脑应用方面的环境和在处事器及移动设备方面的应用有所差异,可是这很快就会有所改变,至少比你想象得要快。在这篇文章中,我会阐明一下java在桌面情况中的应用将奈何获得晋升,然后详细说一下java GUI(用户图形接口)的三个主要的东西:AWT, Swing, 和SWT.。在下文中,我将会开拓一个完整的java桌面应用措施.

Java与桌面端

此刻,风行的桌面平台要数Windows、Mac、and Linux了。但它们不是浑然一体的,Windows主宰着桌面操纵系统的市场,其上有庞大的应用和开拓群体,但它昂贵且有很多安详裂痕。Linux有着稳固的基本,它是开源的软件,比Windows更靠得住。Macs很是容易操纵且不是黑客的方针,但与Windows和Linux比起来,Mac的硬件和软件可选的余地很是的有限。公司和小我私家选择他们的操纵系统基于很多因素。耗费少且安详性高是首选的因素,这导致一些组织从Windows 系统转而选择Linux。对很多用户来说,可用性及对原有应用措施的支持长短常重要的因素,这意味着Windows 将继承享有庞大的市场。Mac有其本身忠诚的用户,这使得苹果机仍然可以存活,Linux 在桌面的风行及Mac的乐成缔造了多样性,这种多样性正是Java需要的,这种多样性使得Java在桌面有举足轻重的职位。

跨平台的支持

Java 运行于所有相关的操纵系统,包罗Windows、 Mac和Linux。对付任何组织,他想把现有的应用从一个操纵系统移植到另一个操纵系统而不消做太多的窜改,那么Java正是他们首选的桌面开拓平台。或者用微软的可视化东西很容易构建.NET应用,可是这将使你被绑定在了Windows平台上了。 许多人也许想立即用Linux 取代Windows 从而制止由微软件操纵系统的裂痕带来的问题。用户不能容忍的问题之一是当从Windows移植到Linux带来的庞大的用度。假如你的应用措施用Java构建,你就没有了这些问题,Java的图形用户界面看上去会跟你用的操纵系统一样,而并不需要做什么窜改。 如果有一天又有一种桌面操纵系统呈现的话,java 是个安详的赌注,因为它此刻可以或许运行在Windows和Linux 上,那么可以猜测它也可以运行在未来大概呈现的操纵系统上,这些操纵系统大概或迟或早地由微软,或是开源社区,或是其它的人开拓出来。

富厚的特征

最初,Java只有很是有限的一些特征去构建图形用户界面。思想就是用平台无关的Java应用措施接口打包差异的操纵系统的当舆图形用户界面,称之为抽象的窗口东西。仅有普通的部件如文件域、文本区、选择框、单选按钮、列表框和按钮被AWT支持,图形和图像的特性支持很是有限,也就是说,只足够构建简朴的applet措施。 认识到需要更高级的图形用户界面组件和图形本领,Sun公司开拓了Swing,Java 2D,Java 3D,图像的输入/输出,Java高级图像(JAI)和许多其它的。这些中的一些窗体组件此刻已经是Java 2尺度版(J2SE)里的一部门,而且其它的一些扩展必需和你的应用措施打包在一起。譬喻Swing、Java 2D、图像的输入/输出都是Java的焦点API,跟着Java开拓东西包(JDK)和Java运行情况一起提供。让我们不要忘了J2EE平台。假如你开拓处事器端的应用措施而且需要富厚的图形用户界面,那么你毫无疑问应该选择Java。这答允你把处事器端的一些代码移到客户端,反之亦然。譬喻:一个项目大概开始是基于WEB和图形界面,在某些时候,用户大概要求图形元素不能在HTML中实现,假如你选择java做客户端应用,那么你可以重用这些当初用来做处事器端的代码。假如你用长途挪用,一些类会真正地实现处事器和客户端的共享。通过页面处事器,Java桌面应用也可以或许和其它的Java 或非Java应用措施通信,如CORBA, TCP/IP,或是 HTTP。

Java图形界面东西

Java有三个主要的图形界面东西:AWT,Swing和SWT。Swing 是构建java图形界面尺度的API(应用措施接口),一些AWT类由Swing基本而来。SWT是一个很是有前途的新的窗体东西,由IBM扶助。可是事实上,这三者彼此增补,他们满意差异的需求。

AWT

抽象窗口东西集为简朴的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,它的速度相当的快。

SWT

#p#分页标题#e#

SWT是IBM为它的Eclipse集成开拓情况而开拓的图形用户界面东西。SWT可以在Eclipse情况外利用,并且提供对操纵系统当舆图形用户界面的直接会见。因此,基于SWT的Java应用措施拥有当地的图形用户界面而且可以和当地此外应用措施和部件集成在一起。 如果你的桌面应用措施发生HTML报表,你想把它显示给用户看。你可以利用Swing去欣赏简朴的HTML文档,但这不是一个抱负的的办理方案。最好是在你的应用措施里提供IE可能Mozilla欣赏器引擎。SWT社区此刻正在设计欣赏器API,这些API可以让你发生基于IE可能Mozilla的HTML窗口。 SWT此刻可以在AIX, HPUX, Linux, QNX, Solaris, and Windows下面运行。Mac OS X is 也在举办之中


#p#副标题#e#

误解与Bug

对付java/Swing一直有着误解,诸如:Java/Swing太慢了,可能是Java/Swing需要更多的内存。Swing也许在老式的奔驰的cpu并且只有32m内存运行JDK1.2运行起来却是很慢。可是假如在PIII级此外CPU有着256mb的内存,运行JDK1。4情况是足够快的。对付一个应用措施来说鼠标在1毫秒和在10毫秒的反应的区别,对付利用者来说看起来是,没什么区此外。Java在企业级的数百人,上千人同时在线的处事器表示的很好。Java在对付有限资源的移动设备上的表示也是很精彩的。那为什么Java不能成为很好的桌面应用措施呢?以我的概念看,Swing的bug比其运行速度慢这问题还严重。譬喻,假如你用的是JDK 1.2,你将不能在表格(称为JTable)中输入%&'($#!q 等这些字符。这八个字符和箭头键及Home, End, Pgup, and Pgdn这几个键的键值是沟通的。个中一个由JTable由到的类挪用了KeyEvent.getCharCode()要领取代KeyEvent.getKeyCode()。这个bug这JDK 1.3已经获得了更正。你或许已经放弃过Swing,假如你是从用JDK 1.2的Swing,你大概因为你不能在表格里输入q而愤怒。大概不幸的是你正需要用Jtable开拓一个Swing应用,你将耗费很多时间从sun的bug数据库中查找办理的步伐。但没有发明你需要的(记着在当时Swing照旧个新事物),你将耗费更多的时间去看Swing的源代码和成长中的事情区,颠末尾这个的经验之后,很少有人很在另一个项目里再用Swing了,你的事情区会像下面这样子:

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;
        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组件,这点是有用的。

总结:

#p#分页标题#e#

Java作为一种网络技能,为了在欣赏器中可以或许运行小应用措施而宣布,可是它从开始就有运行独立的桌面应用措施的本领。不幸的是,AWT没有提供足够的桌面端的措施所需的特性。Swing着手于办理这些问题,可是它有不少的bug。本日,Java有构建大型桌面端应用措施的本领并修复了bug。Java独占的利益是“只写一次,处处运行“——在Windows, Linux, Mac和其它操纵系统上运行Java代码的本领。

    关键字:

在线提交作业