a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 85|回复: 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开发基于表单的应用轨范”
; a7 m0 K# ^5 V+ ~  x* p! `  这款新的JavaFX工具的根基思惟近似于针对Swing的Matisse项目,它供给了与VB或Delphi很是相像的可视化编纂器,简化了 Swing的开发工作。与Matisse一样(它后来酿成了NetBeans 5的GUI编纂器),JavaFX工作台在你工作时为你生成代码,而且,尽管你可以查看生成的代码,但不爽的是你不能对其出产的代码进行改削。
6 U  ]9 |- w0 V# f! e  当你年夜调色板(palette)中拖拽一个JavaFX组件到设计区时,你可觉得它们绑定数据源。该插件今朝撑持JDBC数据源、HTTP (XML / JSON)、文件系统(FileSystem)、文件数据源以及内建过滤器。它还供给一些简单的转换器,经由过程他们你可以便利地将某数据源(好比REST或 JSON数据源)绑定到一组组件上。6 ^9 b: F) a* d) w& O9 e
  除了撑削发单地拖放组件的功能外,该插件还有一个“状况”的概念。状况年夜最初的主状况(master state)起头,你还可以给这些组件或他们的结构增添新状况。应用运行时,好比鼠标点击的事务就可以激发状况转换,进而把你界说的行为自动纺暌钩在UI 上。每个转换还上还能附带一个简单的动画,这样,你就能快速建树缩放,渐变和扭转等特效。: O# W9 ?8 V& p) }
  该工具还有良多其他有价值的特征,如概览(经由过程它你可以在分歧的屏幕尺度上预览应用,如同在分歧的设备上一样,如桌面,移动设备和HDTV等) 以及预界说模板。操作模块你可以快速构建通俗的GUI模式,好比向导按钮(打消、猬缩后退、下一步和竣事等)以及索引按钮(前一步,下一步)。你可以便捷地添加这些按钮并进行客户化。
  G& h( c7 a* q% u) E* z  与众多必需的工具一样,JavaFX需要经由过程一些瞩目的应用才能获得更多的订单。早期考试考试它的公司有Ubivent,它的整个虚拟事务平台是完全基于JavaFX构建的。此外还有WhitStone Technology,他们在颇整体处事平台和IT处事打点产物的工作流组件中使用了JavaFX。然而,对于JavaFX来说最主要的浪子也许就是 2010冬季奥运会,它的组织委员会是Sun的年夜客户,它在其网站上使用了基于JavaFX的金牌展收用。( r% v0 G) j7 Z' `

, r: W/ P; l7 L4 p2 J$ s8 |</p>  //获得输入流
/ V5 }. I. q9 Q7 Y/ @  InputStream input = httpConnection.getInputStream();
! ?  M, T: T4 m) x- D  年夜输入流中掏出的字节约就是down.zip文件年夜2000070起头的字节约。/ j5 g: _6 a/ K& z# I
  巨匠看,其实断点续传用Java实现起来仍是很简单的吧。
; b1 z+ d. j! r) ~# x% Z0 a  接下来要做的事就是怎么保留获得的流到文件中去了。+ n; X/ z% M$ ?' n' F
  保留文件采用的体例。
1 H6 v9 [" b" m; l1 c  我采用的是IO包中的RandAccessFile类。6 T9 [# F; H) ~9 J9 X0 [* j
  操作相当简单,假设年夜2000070处起头保留文件,代码如下:
! \/ H+ k) F% }+ r  u, v& i  RandomAccess oSavedFile = new RandomAccessFile("down.zip","rw");
1 Y* V! J. O2 D; G. C  long nPos = 2000070;
! Q# U$ E$ N# k  //定位文件指针到nPos位置7 w" {" P! {- v/ l1 G
  oSavedFile.seek(nPos);
' q! U+ p: M! P5 u7 L! e  byte[] b = new byte[1024];
- x% Q* y/ \5 f0 H1 @1 J- ]  int nRead;6 w' I) X; R" H- `
  //年夜输入流中读入字节约,然后写到文件中
% T% A* j  Y' a9 ^, e% j  while((nRead=input.read(b,0,1024)) > 0)
. d2 [1 ?: h/ p0 Y* U  {  S# Y. E/ T9 j& V. A
  oSavedFile.write(b,0,nRead);
5 m6 Q' V7 w$ N& ^. [  }& S4 W; B3 h; e" k1 Z
  怎么样,也很简单吧。- n8 m& \( }) s& ]& h4 H
  接下来要做的就是整合成一个完整的轨范了。搜罗一系列的线程节制等等。+ N& p6 a! C3 |) {) }* F0 q" ~
(三)断点续传内核的实现
# n2 D7 Y2 K* F, n  z  首要用了6个类,搜罗一个测试类。
# a3 A- H$ a+ w9 |$ v( R/ S  SiteFileFetch.java负责整个文件的抓取,节制内部线程(FileSplitterFetch类)。4 s0 |- a' Z( B1 K' Q, N4 ^
  FileSplitterFetch.java负责部门文件的抓取。/ M/ c7 ~/ t, e- N) l
  FileAccess.java负责文件的存储。0 O/ v3 c9 _" M
  SiteInfoBean.java要抓取的文件的信息,如文件保留的目录,名字,抓取文件的URL等。
) l9 m+ Y% P9 F$ Z  Utility.java工具类,放一些简单的体例。
4 H3 ]2 a3 i+ s1 ]* X7 Z( \  TestMethod.java测试类。* o1 w5 Y2 i' ?0 Q. @# e( m
  下面是源轨范:3 P- h& u3 r5 {' Z& N+ _1 z; N% A
  /*
2 _( H! N5 Q7 O, x. c: k) M& @3 t  **SiteFileFetch.java6 L4 S' @2 `0 ?. Y/ o
  */
3 c9 T2 T  w4 b5 X1 P  package NetFox;
  D7 q6 {, Z$ }( _0 R) N4 x  import java.io.*;+ e( Y' v5 N& j
  import java.net.*;
- h, w: d8 r% U' X# h( p, j! S  public class SiteFileFetch extends Thread {: C8 C; O9 l3 G" W# i& y
  SiteInfoBean siteInfoBean = null; //文件信息Bean$ s) n' I& ]4 Z
  long[] nStartPos; //起头位置! s7 T; `2 }/ I, k1 ~
  long[] nEndPos; //竣事位置# G! N+ u  x* g4 M+ e7 A/ n  z
  FileSplitterFetch[] fileSplitterFetch; //子线程对象* A, T: ?9 B  O" |+ v% R
  long nFileLength; //文件长度8 z1 p- P. z0 Z; ~5 b
  boolean bFirst = true; //是否第一次取文件+ z( n8 g8 m7 x. C. y
  boolean bStop = false; //遏制标识表记标帜
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 16:44 , Processed in 0.271263 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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