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

= Редактирование кода Java в IDE NetBeans 6.9.1
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Редактирование кода Java в IDE NetBeans 6.9.1 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Редактирование кода Java в IDE NetBeans 6.9.1

|===
|Это повтор демонстрации для версии 6.9, в которой приведено пошаговое описание создания простого приложения в редакторе Java IDE NetBeans 6.9.1.

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

Авторы: Ирина Филиппова (Irina Filippova) и Вита Стейскал (Vita Stejskal)
Продолжительность: 12:09

link:http://bits.netbeans.org/media/javaeditor.swf[+Смотреть сейчас (.swf)+] (для загрузки нажмите клавишу Ctrl, размер – 79 МБ)

link:http://bits.netbeans.org/media/nb69-code-completion-screencast.mp4[+Смотреть сейчас (.mp4)+] (для загрузки нажмите клавишу Ctrl, размер – 34 МБ)

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


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

* link:../intro-screencasts.html[+Видеообзор IDE NetBeans 6.9+]
* 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: Editing Java Code in NetBeans IDE 6.9.1 Screencast[+Отправить отзыв по этому учебному курсу+]
 |         
|===
