JavaFX 1.2 기술: 기능 및 개선 사항

JavaFX 1.2 SDK는 JavaFX 1.1 SDK의 중요 업데이트입니다. JavaFX 1.2 SDK에는 향후 버전과 호환되지 않는 API 변경 사항이 포함되어 있습니다. 일부 클래스, API 및 변수가 JavaFX 1.1 SDK에서 제거되고 최신 클래스, API 및 변수가 JavaFX 1.2 SDK에 추가되었습니다.

JavaFX 1.2 SDK 릴리스는 JavaFX 1.1 SDK와 이진 호환되지 않습니다. 즉, 사용 중인 응용 프로그램과 해당 응용 프로그램에 사용된 라이브러리를 JavaFX 1.2 SDK로 다시 컴파일해야 합니다.

범례(추가됨: 추가 아이콘, 제거됨: 제거 아이콘, 변경됨: 변경됨 아이콘)


애니메이션

영향을 받는 패키지: javafx.animation, javafx.animation.transition

  • 이제 Transition.interpolate의 이름은 interpolator입니다. 변경됨 아이콘

    이전: public override var interpolate = Interpolator.LINEAR;
    현재:   public override var interpolator = Interpolator.LINEAR;
  • Transition 클래스는 Timeline 클래스에서 상속받습니다. 변경됨 아이콘

  • SequentialTransitionParallelTransitionTransition.duration 변수에 액세스할 수 없습니다. 그러나 public-read protected 변수인 cycleDurationtotalDurationTimeline에 포함됩니다. 제거 아이콘 추가 아이콘

    public-read protected var cycleDuration: Duration
    public-read protected var totalDuration: Duration

  • timelines 변수가 KeyFrame에 더 이상 포함되지 않습니다. 하위 타임라인이 더 이상 지원되지 않습니다. 이제 이 기능은 ParallelTransitionSequentialTransition에서 지원합니다. 제거 아이콘

  • timelineDirty 변수가 Transition 클래스에 더 이상 포함되지 않습니다. markDirty() 함수는 이전의 timelineDirty 변수와 동일한 지원을 제공합니다. 이전에는 Transition 클래스의 보호된 변수였던 timelineDirty가 이제 로컬 변수이며 Transition 클래스의 보호된 markDirty() 함수를 통해 수정할 수 있습니다. 이러한 변경을 통해 타사 라이브러리에서 JavaFX Transition 기본 클래스를 확장하여 추가 Transition 클래스를 구현할 수 있게 되었습니다. TranslationTransition, RotateTranslationPathTransition과 같은 기존의 Transition 클래스는 이전과 같이 작동합니다. 이름 변경

    이전: timelineDirty = true;
    현재:   markDirty()

비동기 작업

영향을 받는 패키지: javafx.async

  • AbstractAsyncOperationRemoteTextDocument 클래스는 javafx.async 패키지에 더 이상 포함되지 않습니다. javafx.io.http.HttpRequest 클래스를 javafx.async.RemoteTextDocument 클래스 대신 사용할 수 있습니다. 제거 아이콘

  • 다음은 javafx.async 패키지에 새로 추가된 클래스입니다. 추가 아이콘


효과

영향을 받는 패키지: javafx.scene.effect

  • 다음은 javafx.scene.effect 패키지에 새로 추가된 클래스입니다. 추가 아이콘


그래픽

영향을 받는 패키지: javafx.scene.transform, javafx.scene.image, javafx.ext.swing, javafx.scene, javafx.scene.layout, javafx.stage, javafx.geometry, javafx.scene.paint

  • 이제 javafx.scene.transform.Affine 클래스의 매트릭스 요소에 대한 변수 이름이 다음과 같이 변경됩니다. 변경됨 아이콘

        m00 --> mxx
        m01 --> mxy
        m02 --> tx
        m10 --> myx
        m11 --> myy
        m12 --> ty

    그러나 Transform.affine 메소드를 사용하는 일반적인 경우는 영향을 받지 않습니다.

    이전: Affine { m00: 1 m10: 0 m01: 0 m11: 1 m02: 25 m12: 15 }
    현재:   Affine { mxx: 1 myx: 0 mxy: 0 myy: 1 tx: 25 ty: 15 }
  • 이제 javafx.scene.image.Image.fromBufferedImage(image:java.awt.image.BufferedImage)의 이름은 javafx.ext.swing.SwingUtils.toFXImage(image:java.awt.image.BufferedImage)입니다. 매개 변수 및 기능은 이전 메소드와 동일합니다. 변경됨 아이콘

  • javafx.scene 패키지가 다음과 같은 새 클래스를 지원합니다. 추가 아이콘


  • javafx.geometry 패키지가 다음과 같은 새 클래스를 지원합니다. 추가 아이콘


  • Node가 비활성화되어 있을 때 이벤트가 전달되어서는 안 됩니다. 변경됨 아이콘

    • 응용 프로그램은 비활성화된 Node에서 이벤트를 예상해서는 안 됩니다.
    • Node가 비활성화되어 있을 때 마우스 및 키 이벤트 처리기를 호출해서는 안 됩니다.
    • 포커스가 있는 Node가 비활성화되면 포커스를 잃게 됩니다.

  • Swing 구성 요소의 enabled 변수가 javafx.ext.swing 패키지에 더 이상 포함되지 않습니다. disable 변수는 계속 사용할 수 있으며 구성 요소의 활성화 및 비활성화를 충분히 처리할 수 있습니다. 제거 아이콘

  • 이제 새로운 레이아웃 변수가 javafx.scene.Node, javafx.scene.CustomNodejavafx.scene.Group에 포함됩니다. 추가 아이콘

    • layoutInfo
    • layoutBounds
    • layoutX
    • layoutY

  • 레이아웃에 대한 노드를 배치하는 기본 메소드로는 translateXtranslateY 대신 layoutXlayoutY가 사용됩니다. translateXtranslateY도 작동하지만 layoutXlayoutY의 성능이 더 뛰어납니다. 또한 layoutXlayoutY를 사용하지 않았을 경우 적합한 translateXtranslateY에 정당성을 부여하면 원래 값이 손실됩니다. 추가 아이콘

  • Node의 기본 layoutBounds에 클립, 효과 또는 모든 변환이 포함되지 않습니다. 이름 변경

  • scaleX, scaleY 또는 rotate 변수를 사용할 경우 Node의 암시적 피벗은 layoutBounds의 변환되지 않은 중심입니다. 이름 변경

  • boundsInScene 변수가 Node, GroupCustomNode 클래스에 더 이상 포함되지 않습니다. localToScene(boundsInLocal) 함수가 이전 boundsInScene 변수와 동일한 지원을 제공합니다. boundsInScene 변수는 계산 비용이 많이 들고 localToScene(boundsInLocal) 함수는 localToScene 함수에 대한 바인딩을 허용하지 않기 때문에 더 뛰어난 성능을 제공합니다. 이름 변경

    이전: node.boundsInScene
    현재:   node.localToScene(node.boundsInLocal)
  • 이제 javafx.scene.layout 패키지에는 다음과 같은 클래스가 포함됩니다. 추가 아이콘


    자세한 내용은 JavaFX 1.2의 새로운 기능: 새 레이아웃 및 효과를 참조하십시오.

  • 새로운 부울 public-read protected 변수 needsLayoutClipView, Flow, Panel, Stack, Tile, HBoxVBox 클래스의 javafx.scene.Parent 클래스에서 상속받습니다. 추가 아이콘

  • 이제 javafx.scene.layout 패키지, HBoxVBox에서 각각 nodeVPosnodeHPos를 사용하여 할당된 공간 내에 노드를 배치할 수 있습니다. JavaFX SDK 1.1에서는 모든 노드가 HBox의 경우 맨 위에, VBox의 경우 왼쪽에 배치되었습니다. 변경됨 아이콘

  • javafx.scene.layout.Resizable 클래스에서 preferredHeightpreferredWidth 변수가 더 이상 Resizable 클래스에 포함되지 않습니다. getPreferredHeight()getPreferredWidth() 함수는 이전 preferredHeightpreferredWeight 변수와 동일한 지원을 제공합니다. 이제 preferredHeightpreferredWidth는 지역 변수이며 Resizable 클래스의 보호 getPreferredHeight()getPreferredWidth() 함수를 통해 액세스할 수 있습니다. 이름 변경

    이전: public-read protected preferredWidth: Number
    현재: protected override bound function getPreferredWidth(): Number
    이전: public-read protected preferredHeight: Number
    현재: protected override bound function getPreferredHeight(): Number
  • JavaFX SDK 1.1에서는 Group의 숨겨진 자식 바운드(즉, visible: false;인 자식 노드)가 Group의 바운드에 포함되었습니다. JavaFX SDK 1.2에서는 모든 숨겨진 자식이 부모 Group의 바운드에 영향을 주지 않습니다. 이 동작을 원하는 경우 자식 노드를 (visible:true; opacity:0;)으로 설정하십시오.변경됨 아이콘

  • 다음은 javafx.stage에 새로 추가된 클래스입니다. 추가 아이콘


  • 새로운 Screen 클래스로 인해 javafx.screen.widthjavafx.screen.height 등록 정보를 사용할 수 없게 되었습니다. javafx.screen.widthjavafx.screen.heightjavafx.FX.getProperty()에서 더 이상 지원되지 않습니다. 제거 아이콘

  • Screen 클래스에는 화면 크기 및 해상도(DPI)를 쿼리하는 dpi 등록 정보도 포함됩니다. 추가 아이콘

  • 이제 javafx.stage.Stage 클래스의 focused 변수 이름이 containsFocus입니다. 변경됨 아이콘

  • Group의 컨텐트 시퀀스에서 다른 노드의 클립으로 또는 CustomNode.create() 함수의 반환값으로 둘 이상의 위치에서 노드를 사용하지 않는 것이 좋습니다. JavaFX 1.2 런타임에서 노드를 둘 이상의 위치에 사용하려는 시도를 감지하면 예외가 발생하고 시도를 무시합니다. 단, 아래에서 설명하는 경우는 예외입니다. 변경됨 아이콘

    이전 릴리스의 JavaFX 기술에서는 노드가 이미 다른 Group 컨텐트 시퀀스의 구성원인 경우에도 노드를 Group의 컨텐트 시퀀스에 삽입되는 것을 명시적으로 허용했습니다. 이런 경우 노드는 다른 Group에서 암시적으로 제거됩니다. JavaFX 1.2 런타임에서는 노드가 이미 다른 Group의 구성원일 경우 Group에 노드를 추가하면 프로그래밍 오류가 발생할 가능성이 높기 때문에 잘못된 것으로 간주합니다. 그러나 암시적 제거 동작은 유지되며, 기존 코드를 전환할 시간을 제공하기 위해 경고 메시지 및 예외 스택 추적이 인쇄됩니다.

  • 일반적으로 JavaFX 제품군으로 작성한 FXZ 파일에서 로드된 컨텐트에서 명명된 노드를 가져오고 이러한 노드를 새 Group에 배치합니다. 변경됨 아이콘

    var fxdContent = FXDLoader.loadContent("scene.fxz"); 
    var g = Group { 
        content: [ fxdContent.getNode("myNode") ] 
    } 

    이 코드를 실행하면 fxdContent에서 가져온 노드가 이미 FXDLoader를 작성한 Group의 구성원이기 때문에 JavaFX 1.2에서 경고 메시지가 생성됩니다. 이러한 경고 메시지가 표시되지 않도록 하려면 새 Group에 노드를 추가하기 전에 이전 Group에서 노드를 제거하십시오. FXZ 파일에서 로드된 노드를 사용하고 있는 경우 javafx.fxd.Duplicator 클래스를 사용하여 노드를 이동하지 않고 복사할 수 있습니다. 또는 아트 작업의 구조를 재배열하고 FXZ 파일을 재생성할 수 있습니다. FXZ 파일을 로드한 후 장면 그래프를 조작하지 마십시오.

  • fromAWTColor 메소드가 javafx.scene.paint.Color 클래스에 더 이상 포함되지 않습니다. 제거 아이콘
    public fromAWTColor(c: java.awt.Color) : Color 

  • enabled 변수는 javafx.ext.swing.SwingComponents 클래스에서 제거되었습니다. 제거 아이콘

키보드 및 마우스 이벤트

영향을 받는 패키지: javafx.scene.control, javafx.ext.swing, javafx.scene.input

  • 기본적으로 Node는 포커스를 받을 수 없으며 Node가 포커스를 받기 위해 키 처리기가 필요하지 않습니다. 단, ControlSwingComponent는 기본적으로 포커스를 받습니다. 이제 새로운 focusTraversable 변수가 포함되며 이 변수는 부울입니다. focusTraversable 변수는 이 Node가 포커스 순회 주기의 일부가 될지 여부를 지정합니다. 변경됨 아이콘 추가 아이콘

  • 이제 새로운 source 변수 Node가 이벤트 버블링에 대한 MouseEvent 클래스에 포함됩니다. source 변수는 마우스 이벤트 아래의 노드 하위 트리에서 시각적으로 최상위 노드입니다. 노드가 최하위 노드일 경우 source 변수는 노드와 동일합니다. 노드가 부모의 인스턴스일 경우 source 변수는 마우스 이벤트 아래의 (@node) 하위 트리에서 시각적으로 최상위 노드입니다. 추가 아이콘

  • 이제 javafx.scene.input 패키지에는 다음과 같은 클래스가 포함됩니다. 추가 아이콘


언어 변경 사항


  • JavaFX 스크립트 프로그래밍 언어 참조를 참조하십시오.

  • 다중 상속: JavaFX 1.1에서 JavaFX 클래스는 상속받을 수 있는 클래스에 대한 복잡한 규칙을 사용하여 클래스 및 인터페이스에서 상속받을 수 있습니다. JavaFX 1.2에서는 mixin 클래스 개념이 추가되었습니다. 이제 상속 규칙에 mixins가 포함되어 규칙이 간단해지고 제한이 완화되었습니다. 이제 JavaFX 클래스는 최대 하나의 클래스(비mixin) 및 여러 인터페이스나 mixins에서 상속받을 수 있습니다. mixin은 직접 인스턴스화할 수 없습니다. Mixins는 일반 클래스처럼 보이지만 선언에 mixin 수정자가 있습니다. 자세한 내용은 JavaFX 언어 자습서를 참조하십시오.

  • 이제 명시적 시퀀스에 쉼표가 필요합니다. 변경됨 아이콘

    [3, 77, 8]

    그러나 세미콜론처럼 } 뒤에는 쉼표가 필요하지 않습니다.

    [Foo { 
        x: 14 
     } 
     Bar { 
        sneeze: "cough" 
     }
    ] 

  • or 연산자와 and 연산자의 우선 순위가 변경되었습니다. JavaFX and 연산자의 우선 순위가 or 연산자보다 높습니다. 변경됨 아이콘

       a or b and c   

    다음과 동일한 의미임:

       a or (b and c)

  • 블록의 var에는 포함하는 블록의 var와 동일한 이름을 지정할 수 없습니다. 이제 다음과 같은 경우는 허용되지 않습니다. 변경됨 아이콘

  • public function f() {
       var x : Integer;
       {
          var x : Integer; //compile error
       }
    } 

    또는

    for(i in [1..5]) {
       for(i in [2..4]) { //compile error
           println("Test");
       }
    } 
      
  • on replace 트리거가 bind 내에서 더 이상 허용되지 않습니다. 변경됨 아이콘

    var x = bind for (i in [0..5]) {
        var y = (i mod 2 == 0) on replace { //compile error
            println("y changed");
        }
        y
    }

  • Iterable을 통한 for 루프 바운드는 적절하지 않고 업데이트가 표시되지 않으므로 더 이상 허용되지 않습니다. 변경됨 아이콘

  • Duration의 변경 사항은 다음과 같습니다. 변경됨 아이콘

    • Duration.toMillis()는 숫자 대신 Double을 반환합니다.
    • Duration.INDEFINITE는 이제 알 수 없는 길이의 기간을 나타냅니다.
    • Duration.toDate()는 더 이상 지원되지 않습니다.

  • 많은 예약어가 공식적으로 더 이상 예약되어 있지 않으며 식별자로 사용할 수 있습니다. 변경됨 아이콘

    • first
    • in
    • init
    • into
    • inverse
    • last
    • on
    • postinit
    • replace
    • step
    • trigger
    • tween
    • where
    • with

 

매체

영향을 받는 패키지: javafx.scene.media

  • RTSP(Real-time streaming protocol) 지원은 새로운 기능입니다. RTSP에 대한 자세한 내용은 RTSP 위키를 참조하십시오. 추가 아이콘

    var url: String = "rtsp://sqe-macpro-2.sfbay.sun.com/sample_300kbit.mov";

  • 매체는 두개의 추가 OS 플랫폼, OpenSolaris 및 Ubuntu Linux를 지원합니다. 두 플랫폼 모두 오픈 소스 멀티미디어 프레임워크 GStreamer를 사용합니다. 추가 아이콘

  • 매체에서는 향상된 비디오 스크러빙에 대한 지원을 제공합니다. 추가 아이콘

모바일

  • 이제 모바일에서 사각형 자르기를 지원합니다. 추가 아이콘

  • 교차 플랫폼 비디오(VP6 인코딩)가 지원되며 FXM/VP6이 포함되었습니다. 추가 아이콘

  • Mobile Emulator(Windows 플랫폼 전용)에서는 추가 매체 파일을 지원합니다. 추가 아이콘

    • 이제 FXM/FLV, WAV 및 MIDI 파일이 기본적으로 지원되며 타사 구성 요소가 필요하지 않습니다.
    • MP3 및 AMR 파일의 경우 적절한 DirectShow 필터(스플리터 및 디코더)를 설치해야 합니다. 예를 들어 K-Lite Codec Pack에는 필요한 필터가 모두 들어 있습니다.
    • 3GP, MPEG1, MP4, MOV 파일의 경우 Apple QuickTime 플레이어를 설치해야 합니다. 이러한 형식이 작동하지 않는 경우 Apple QuickTime 플레이어를 다시 설치하고 컴퓨터를 다시 시작하십시오.

성능 향상

  • 장면 그래프 리팩토링의 기본 구현에서 향상된 런타임 성능을 제공합니다. 변경됨 아이콘

  • 시작 시간 성능이 이전 시작 시간 성능에 비해 향상되었습니다. 변경됨 아이콘

  • 컴파일러 변경으로 런타임 성능이 향상되었습니다. 변경됨 아이콘

  • JavaFX 응용 프로그램의 성능 향상 기술에 대한 문서를 참조하십시오.


영구 저장소

영향을 받는 패키지: javafx.io

  • 이제 새로운 javafx.io 패키지에 다음과 같은 클래스가 포함됩니다. 추가 아이콘


플랫폼 지원

  • 이제 두 개의 추가 OS 플랫폼이 지원됩니다. 추가 아이콘

    • Solaris 베타: OpenSolaris 2009.06
    • Linux 베타: Ubuntu 8.04 LTE

제품군

영향을 받는 패키지: javafx.fxd

  • 이제 Adobe Photoshop CS4 및 Adobe Illustrator CS4가 지원됩니다. 추가 아이콘

  • javafx.fxd 패키지의 FXDLoader 클래스에는 추가 변수 및 함수가 있습니다. FXDLoader 클래스는 javafx.async.Task 클래스에서 상속받아 FXZ/FXD 파일의 백그라운드 로드를 지원합니다. 추가 아이콘

  • FXDNode 클래스가 추가되었습니다. UiStub 클래스는 FXDNode 클래스로 대체되었습니다. 이제 UI 스텁 파일은 FXDNode 클래스에서 확장됩니다. 추가 아이콘

  • FXDNode 클래스에서는 그래픽 컨텐트가 로드되는 방식을 동기식(다른 작업 차단) 또는 비동기식(백그라운드에서 실행)에서 선택할 수 있습니다. 변경됨 아이콘
  • Scene {content: FXDNode {           
               url: "{__DIR__}mygraphics.fxz"          
               backgroundLoading: true           
               placeholder: Text { x: 10 y: 10 content: "Loading graphics ..."}       
          }   
    }  

  • _root 변수는 FXDContent 클래스에 더 이상 포함되지 않습니다. getRoot() 함수는 이전 _root 변수와 동일한 지원을 제공합니다. 변경됨 아이콘

UI 컨트롤 구성 요소

영향을 받는 패키지: javafx.scene.control

  • 이제 javafx.scene.control 패키지에 다음과 같은 UI 컨트롤 작성 클래스가 포함됩니다. 추가 아이콘


  • JavaFX 화면 UI 컨트롤에 대한 문서를 참조하십시오.

  • 이제 Control은 추상 클래스이며 현저하게 변경되었습니다. 변경됨 아이콘

  • Behavior 변수는 focused, hoverpressed 변수가 제거된 javafx.scene.control.Skin 클래스에 추가되었습니다. 제거 아이콘 추가 아이콘

  • javafx.scene.control.Skin에서는 scene 변수의 이름이 node로 변경되었습니다. 변경됨 아이콘

    이전:
    public-init protected scene Node
    현재:
    public-read protected node Node
  • 이제 Skin 클래스는 추상 클래스이며 새로운 contains()intersects() 함수가 추가되었습니다. 기존 함수 이름은 다음과 같이 변경되었습니다. 변경됨 아이콘 추가 아이콘

  • 이전: protected computeMaxHeight: Number
    현재: protected getMaxHeight(): Number
    이전: protected computeMaxWidth(): Number
    현재: protected getMaxWidth(): Number
    이전: protected computeMinHeight(): Number
    현재: protected getMinHeight(): Number
    이전: protected computeMinWidth(): Number
    현재: protected getMinWidth(): Number
    이전: protected computePrefHeight(width: Number): Number
    현재: protected getPrefHeight(width: Number): Number
    이전: protected computePrefWidth(height: Number): Number
    현재: protected getPrefWidth(height: Number): Number
  • TextBox 클래스가 현저하게 변경되어 새 기능이 추가되었습니다. 변경됨 아이콘 추가 아이콘

UI 차트 구성 요소

영향을 받는 패키지: javafx.scene.chart, javafx.scene.chart.data, javafx.scene.chart.part


웹 서비스

영향을 받는 패키지: javafx.io.http, javafx.data.pull, javafx.data.xml, javafx.data.feed, javafx.data.feed.atom, javafs.data.feed.rss

  • 이제 HttpRequest.enqueue()의 이름이 HttpRequest.start()입니다. 변경됨 아이콘

  • 이제 HttpRequest.cancel()의 이름이 HttpRequest.stop()입니다. 변경됨 아이콘

  • 다음 두 공개 함수가 더 이상 포함되지 않습니다. 제거 아이콘

    public function setHeader(name: String, value: String)
    public function getResponseHeaderNames(): String[]
    

  • 이러한 메소드 및 필드의 서명이 Integer에서 Long으로 변경되었습니다. 변경됨 아이콘

    public-read protected var towrite: Long;
    public-read protected var toread: Long;
    public-read protected var written: Long;
    public-read protected var read: Long;
    public var onToWrite: function(bytes: Long): Void = null;
    public var onToRead: function(bytes: Long): Void = null;
    public var onWritten: function(bytes: Long): Void = null;
    public var onRead: function(bytes: Long): Void = null; 
    

  • 이제 URLConverter 클래스가 javafx.io.http 패키지에 포함됩니다. 추가 아이콘

  • 새로운 javafx.data.feed 패키지에 다음과 같은 두 클래스가 포함됩니다. 추가 아이콘


  • 새로운 javafx.data.feed.atom 패키지에 다음과 같은 클래스가 포함됩니다. 추가 아이콘


  • 새로운 javafx.data.feed.rss 패키지에 다음과 같은 클래스가 포함됩니다. 추가 아이콘


기타

영향을 받는 패키지: javafx.util, javafx.data

  • 새로운 javafx.date 패키지에 DateTime 클래스가 있습니다. 추가 아이콘

  • 다음은 javafx.util 패키지에 새로 추가된 클래스입니다. 추가 아이콘


  • 새로운 javafx.data 패키지에 다음과 같은 두 클래스가 포함됩니다.


  • 새로운 javafx.reflect 패키지에 다음과 같은 두 클래스가 포함됩니다.

 

英语
日本語
한국어
简体中文
Português do Brasil
русский