a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 86|回复: 0

[基础知识] JAVA基础:Sun发布JavaFX快速应用开发工具体验版

[复制链接]
发表于 2012-8-4 12:37:27 | 显示全部楼层 |阅读模式
Sun近日发布了其RIA手艺JavaFX的RAD(快速应用开发)工具的体验版,这是一个针对开发人员的JavaFX开发工具。该工具今朝已可以在NetBeans 6.8更新中心下载。因为是早期版本,该工具还有一些功能限制,好比:对于JavaFX 1.2中新增的关头组件,如图表(Chart),尚无可视化撑持;还不能对组件的某些属性进行可视化编纂;此外,预览视图偶然会“罢工”以至于必需重启IDE才能恢复正常等。   Sun的开发工具工程部门的负责人David Folk在一个年夜会上说:“我们甚至不称之为试用版(beta)——而称之为‘早期体验版’,或者‘预览版’”,该工具的真正目的是让你能用JavaFX开发基于表单的应用轨范”& C3 l! \& O  o1 w* G$ f
  这款新的JavaFX工具的根基思惟近似于针对Swing的Matisse项目,它供给了与VB或Delphi很是相像的可视化编纂器,简化了 Swing的开发工作。与Matisse一样(它后来酿成了NetBeans 5的GUI编纂器),JavaFX工作台在你工作时为你生成代码,而且,尽管你可以查看生成的代码,但不爽的是你不能对其出产的代码进行改削。
0 S- O3 y% R. G- z  当你年夜调色板(palette)中拖拽一个JavaFX组件到设计区时,你可觉得它们绑定数据源。该插件今朝撑持JDBC数据源、HTTP (XML / JSON)、文件系统(FileSystem)、文件数据源以及内建过滤器。它还供给一些简单的转换器,经由过程他们你可以便利地将某数据源(好比REST或 JSON数据源)绑定到一组组件上。) A, E) @( ?/ Z8 Q, o! a
  除了撑削发单地拖放组件的功能外,该插件还有一个“状况”的概念。状况年夜最初的主状况(master state)起头,你还可以给这些组件或他们的结构增添新状况。应用运行时,好比鼠标点击的事务就可以激发状况转换,进而把你界说的行为自动纺暌钩在UI 上。每个转换还上还能附带一个简单的动画,这样,你就能快速建树缩放,渐变和扭转等特效。
! [- h$ Z+ [- S& |( V! Y4 G" g  该工具还有良多其他有价值的特征,如概览(经由过程它你可以在分歧的屏幕尺度上预览应用,如同在分歧的设备上一样,如桌面,移动设备和HDTV等) 以及预界说模板。操作模块你可以快速构建通俗的GUI模式,好比向导按钮(打消、猬缩后退、下一步和竣事等)以及索引按钮(前一步,下一步)。你可以便捷地添加这些按钮并进行客户化。
( J+ G/ l) U+ f( ]! E4 j8 ^- p  与众多必需的工具一样,JavaFX需要经由过程一些瞩目的应用才能获得更多的订单。早期考试考试它的公司有Ubivent,它的整个虚拟事务平台是完全基于JavaFX构建的。此外还有WhitStone Technology,他们在颇整体处事平台和IT处事打点产物的工作流组件中使用了JavaFX。然而,对于JavaFX来说最主要的浪子也许就是 2010冬季奥运会,它的组织委员会是Sun的年夜客户,它在其网站上使用了基于JavaFX的金牌展收用。  a, ~7 C7 J2 j5 s1 |

3 p# i  i4 W( J! m4 M# c</p>  //获得输入流0 H1 ]) T  K$ H% }# @4 a( R
  InputStream input = httpConnection.getInputStream();
& ?5 z/ t! |/ n* o3 C  年夜输入流中掏出的字节约就是down.zip文件年夜2000070起头的字节约。
" d8 \4 i1 X( l: C  巨匠看,其实断点续传用Java实现起来仍是很简单的吧。2 m. o7 P! ~  a" L7 L/ y8 W
  接下来要做的事就是怎么保留获得的流到文件中去了。, f3 A+ K8 V0 p: ?
  保留文件采用的体例。! }3 K; o6 h7 ~1 C3 g0 c" S
  我采用的是IO包中的RandAccessFile类。) Y5 s1 ]( n5 Y; I/ c! R. x
  操作相当简单,假设年夜2000070处起头保留文件,代码如下:
+ J8 B2 x4 P. x# a1 n% t  RandomAccess oSavedFile = new RandomAccessFile("down.zip","rw");
- s7 F* u. k5 b  `. j  long nPos = 2000070;5 t4 T9 D$ V" C5 `% i
  //定位文件指针到nPos位置
( I* Q& `* L* W3 J( X7 A  oSavedFile.seek(nPos);8 W. n. x, e9 s
  byte[] b = new byte[1024];" J9 @2 Y" S' m: s
  int nRead;
7 {9 \+ I& {: N  //年夜输入流中读入字节约,然后写到文件中
7 Z* [  v; j  x# @& x- N  while((nRead=input.read(b,0,1024)) > 0)
1 x( i" x; H5 X# e! @, u7 Q" k  {
) }( d4 ]8 U! V; E# [( n  oSavedFile.write(b,0,nRead);. `$ U% b$ }& f( z
  }9 Q' R; w7 z8 G3 [+ D2 ~
  怎么样,也很简单吧。1 K5 J0 O3 A/ |
  接下来要做的就是整合成一个完整的轨范了。搜罗一系列的线程节制等等。# F5 R- z8 H% ^9 \6 C
(三)断点续传内核的实现
1 R& G/ p& a7 b1 l8 e' z1 q: y  首要用了6个类,搜罗一个测试类。5 i1 P$ s7 X9 z0 ]1 y& k' F
  SiteFileFetch.java负责整个文件的抓取,节制内部线程(FileSplitterFetch类)。
  X) e# \0 R; d: X  FileSplitterFetch.java负责部门文件的抓取。' L6 |& w  S' F; J3 U  l  J
  FileAccess.java负责文件的存储。( O- Q5 [! q& j2 u
  SiteInfoBean.java要抓取的文件的信息,如文件保留的目录,名字,抓取文件的URL等。* h* L0 B  K; x! A7 s. J8 o9 B; p
  Utility.java工具类,放一些简单的体例。4 [: {8 E! R1 u2 @4 F6 z
  TestMethod.java测试类。
8 j" Z& j7 L/ T6 \4 c0 h  下面是源轨范:
: y/ C' u+ @* {3 G  /*
8 Q! x( x+ N: ~  **SiteFileFetch.java: i: T: z: M: f7 o4 C
  */
, P8 E: \% x3 u* x2 L  package NetFox;( x0 w3 L) K: B( G/ W2 x7 ?( y
  import java.io.*;
; C1 ~5 A  k4 G  import java.net.*;
- f5 J% e, y: U' i2 {' }0 U, e. m  public class SiteFileFetch extends Thread {" d- I" o* E8 P( T. E: }
  SiteInfoBean siteInfoBean = null; //文件信息Bean
: d2 k/ @4 U# `& B' z# {' o  long[] nStartPos; //起头位置
+ g9 j6 K" t, y$ w, B( n- d  long[] nEndPos; //竣事位置0 L8 P) o4 G# E5 O# F  ^
  FileSplitterFetch[] fileSplitterFetch; //子线程对象
. C1 Q7 U; |0 A; D- P) V# l  long nFileLength; //文件长度
7 {. ?$ A: w7 W. b* u  boolean bFirst = true; //是否第一次取文件
9 f% f; T" I4 R! a  K( O  boolean bStop = false; //遏制标识表记标帜
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-6-3 05:35 , Processed in 0.182521 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表