// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= NetBeans IDE 7.0でのJavaFXサポートのビデオ
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: NetBeans IDE 7.0でのJavaFXサポートのビデオ - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, NetBeans IDE 7.0でのJavaFXサポートのビデオ

|===
|このスクリーンキャストでは、NetBeans IDE 7.4で実装されている次のJavaFX関連の機能を示します。

* JavaFXランタイム・クラスパス
* JavaFXおよびJava SEプロジェクト・アライメント
* JavaFX Mavenプロジェクト・テンプレート
* Mavenプロジェクト内のJavaFXファイル・タイプ

作成者: Petr Somol、Alyona Stashkova 
時間: 7:04

link:http://bits.netbeans.org/media/netbeans_fx.mp4[+フルサイズを視聴/ダウンロード+] (.mp4)([Ctrl]キーを押しながらクリックするとダウンロード、19,5MB)

link:/about/contact_form.html?to=3&subject=Feedback:%20Screencast%20-%20JavaFX%20Support%20in%20NetBeans%20IDE[+ご意見をお寄せください+]
 |  
|===


== 関連リンク

* link:http://wiki.netbeans.org/NewAndNoteworthyNB74[+NetBeans 74の新機能および注目すべき機能+]
* link:http://wiki.netbeans.org/JavaFX[+JavaFX - NetBeans Wiki+]
* link:http://docs.oracle.com/javafx/[+JavaFX 2ドキュメント・ホーム+]
