// 
//     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でのコードのフォーマット機能のビデオ
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: NetBeans IDEでのコードのフォーマット機能のビデオ - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, NetBeans IDEでのコードのフォーマット機能のビデオ

|===
|このスクリーンキャストでは、NetBeans IDEのいくつかの重要なフォーマット機能を示します。このスクリーンキャストでは、Netbeans IDEで利用可能な次のコードのフォーマット機能を使用する方法を示します。

* 一般的なインデント
* 中カッコ
* インポート
* プロファイル固有のフォーマット

このデモは、link:https://netbeans.org/projects/samples/downloads/download/Samples/Java/Formatting.zip[+NetBeansサンプル・コード・ライブラリ+]で利用可能なフォーマット・プロジェクトに基づいています。

作成者: Jiri Prox、Alyona Stashkova 
時間: 7:40

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

link:/about/contact_form.html?to=3&subject=Feedback:%20Video%20of%20the%20Code%20Formatting%20Features%20in%20the%20NetBeans%20IDE[+このチュートリアルに関するご意見をお寄せください+]
 |  
|===


== 関連リンク

* _NetBeans IDEによるアプリケーションの開発_のlink:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG613[+ソース・コード分析およびリファクタリングでのヒントの使用+]
