// 
//     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.
//

= Разработка Swing GUI в IDE NetBeans
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Разработка Swing GUI в IDE NetBeans - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Разработка Swing GUI в IDE NetBeans

Эти экранные демонстрации позволяют пошагово ознакомиться с разработкой графического пользовательского интерфейса Swing в IDE NetBeans, как описано в учетбнике link:../java/quickstart-gui.html[+Разработка графического пользовательского интерфейса Swing в IDE NetBeans+].

С помощью этих экранных демонстраций вы узнаете, как добавлять, вставлять, выравнивать, изменять размер и применять отступ к компонентам для компоновки внешнего вида графического интерфейса, что позволит вам просматривать и редактировать контактную информацию лиц, включенных в базу данных сотрудников. Вы ознакомитесь с методами эффективного использования возможностей построителя графического интерфейса среды IDE.

|===
|
== Обзор конструктора графического интерфейса (.swf)

(Щелкните link:http://bits.netbeans.org/media/quickstart-gui-explore.swf[+здесь+] для полноэкранного просмотра, нажмите клавишу Ctrl для загрузки, размер — 1,9 МБ)
Продолжительность: 01:19

 

|
== Добавление отдельных компонентов и группы компонентов (.swf)

(Щелкните link:http://bits.netbeans.org/media/quickstart-gui-add.swf[+здесь+] для полноэкранного просмотра, нажмите клавишу Ctrl для загрузки, размер — 5,6 МБ)
Продолжительность: 08:21

 

|
== Вставка компонентов (.swf)

(Щелкните link:http://bits.netbeans.org/media/quickstart-gui-insert.swf[+здесь+] для полноэкранного просмотра, нажмите клавишу Ctrl для загрузки, размер — 1,1 МБ)
Продолжительность: 01:49

 

|
== Выравнивание и привязка компонентов (.swf)

(Щелкните link:http://bits.netbeans.org/media/quickstart-gui-align.swf[+здесь+] для полноэкранного просмотра, нажмите клавишу Ctrl для загрузки, размер — 4,4 МБ)
Продолжительность: 07:40

 

|
== Изменение размера компонентов и применение отступа (.swf)

(Щелкните link:http://bits.netbeans.org/media/quickstart-gui-resize.swf[+здесь+] для полноэкранного просмотра, нажмите клавишу Ctrl для загрузки, размер — 4,1 МБ)
Продолжительность: 08:03

 
|===

Если при просмотре экранных демонстраций возникают проблемы, дождитесь полной загрузки видеоролика перед началом просмотра.


== Связанные ссылки

* link:../intro-screencasts.html[+Видеообзор IDE NetBeans+]
* link:https://netbeans.org/kb/index.html[+Учебный куср по IDE NetBeans. Общие сведения о разработке на Java +]
* link:https://netbeans.org/kb/index.html[+Документация по IDE NetBeans+]
link:/about/contact_form.html?to=3&subject=Feedback:%20Designing%20a%20Swing%20GUI%20in%20NetBeans%20IDE%20Screencast[+Отправить отзыв по этому учебному курсу+]


