// 
//     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でのSwing GUIのデザイン
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: NetBeans IDEでのSwing GUIのデザイン - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, NetBeans IDEでのSwing GUIのデザイン

これらのスクリーンキャストでは、link:../java/quickstart-gui.html[+NetBeans IDEでのSwing GUIのデザイン+]・チュートリアルで説明されているNetBeans IDEでのSwing GUIのデザインについて詳しく説明します。

これらのスクリーンキャストでは、社員のデータベースに含まれる個人の連絡先情報を表示したり、編集したりできるGUIフロント・エンドのレイアウトを決定するために、コンポーネントの追加、挿入、位置揃え、サイズ変更、およびインデントを行う方法を確認できます。IDEのGUIビルダーの機能を効果的に使用する方法を学びます。

|===
|
== GUIビルダーの調査(.swf)

(link:http://bits.netbeans.org/media/quickstart-gui-explore.swf[+ここを+]クリックするとフルサイズを表示、[Ctrl]を押しながらクリックするとダウンロード、1.9MB)
時間: 01:19

 

|
== 個々のコンポーネントおよび複数のコンポーネントの追加(.swf)

(link:http://bits.netbeans.org/media/quickstart-gui-add.swf[+ここを+]クリックするとフルサイズを表示、[Ctrl]を押しながらクリックするとダウンロード、5.6MB)
時間: 08:21

 

|
== コンポーネントの挿入(.swf)

(link:http://bits.netbeans.org/media/quickstart-gui-insert.swf[+ここを+]クリックするとフルサイズを表示、[Ctrl]を押しながらクリックするとダウンロード、1.1MB)
時間: 01:49

 

|
== コンポーネントの位置揃えおよびアンカー設定(.swf)

(link:http://bits.netbeans.org/media/quickstart-gui-align.swf[+ここを+]クリックするとフルサイズを表示、[Ctrl]を押しながらクリックするとダウンロード、4.4MB)
時間: 07:40

 

|
== コンポーネントのサイズ変更およびインデント(.swf)

(link:http://bits.netbeans.org/media/quickstart-gui-resize.swf[+ここを+]クリックするとフルサイズを表示、[Ctrl]を押しながらクリックするとダウンロード、4.1MB)
時間: 08:03

 
|===

右側でのスクリーンキャストの表示で問題が発生する場合は、開始する前に、スクリーンキャストをダウンロードできます。


== 関連リンク

* link:../intro-screencasts.html[+NetBeans IDEのガイド・ビデオ・ツアー+]
* link:https://netbeans.org/kb/index.html[+NetBeans IDEチュートリアル: 一般的なJava開発+]
* link:https://netbeans.org/kb/index.html[+NetBeans IDEドキュメント+]
link:/about/contact_form.html?to=3&subject=Feedback:%20Designing%20a%20Swing%20GUI%20in%20NetBeans%20IDE%20Screencast[+このチュートリアルに関するご意見をお寄せください+]


