blob: fd8022249e5baddc3027a878dbf477c96ac6639c [file] [log] [blame]
//
// 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 中的可视调试器
本文档介绍了如何使用可视调试器来帮助您在 GUI 应用程序中找到并调试可视元素的代码。您可以在 Java JavaFX GUI 应用程序中使用可视调试器。
在本文档中,您将使用可视调试器浏览 Anagram Game 样例项目。本文档将说明如何先生成应用程序的 GUI 快照,然后使用该快照找到源代码,将监听程序添加到事件中并查看 GUI 组件的事件日志。
image::images/netbeans-stamp-80-74-73.png[title="此页上的内容适用于 NetBeans IDE 7.2、7.3、7.4 和 8.0"]
*要学习本教程,您需要具备以下软件和资源。*
|===
|软件或资源 |要求的版本
|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |7.2, 7.3, 7.4, 8.0
|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Java 开发工具包 (JDK)+] |版本 7 或 8
|===
*JUnit 说明*。如果在安装 IDE 时未安装 JUnit 库,则当您尝试调试应用程序时,系统将提示您解决缺少资源问题并安装 JUnit
== 生成 GUI 快照
在本教程中,您将使用 Anagram Game 样例应用程序,这是一种在新建项目向导中以样例形式提供的 Java 桌面应用程序,带有简单的 GUI。创建了项目后,可以启动调试会话,并生成应用程序的 GUI 快照。
1. 从主菜单中选择“文件”>“新建项目”(Ctrl-Shift-N 组合键;在 Mac 上为 ⌘-Shift-N 组合键)以打开新建项目向导。
2. 在“样例”> "Java" 类别中选择 "Anagram Game"。单击 "Next"(下一步)。
3. 指定项目的位置。单击 "Finish"(完成)。
单击 "Finish"(完成),此时 IDE 将创建项目并在 "Projects"(项目)窗口中打开该项目。
. 单击工具栏中的“调试”按钮(Ctrl-F5 组合键;在 Mac 上为 ⌘-F5 组合键)以启动调试会话。
或者,在“项目”窗口中右键单击项目节点,然后选择“调试”。
启动该会话时,IDE 将启动 Anagram Game 应用程序,并打开“调试”窗口。
有关运行调试器的更多信息,请参见_使用 NetBeans IDE 开发应用程序_中的link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG798[+关于运行和调试 Java 应用程序项目+]。
. 从主菜单中选择“调试”>“生成 GUI 快照”。
选择“生成 GUI 快照”时,IDE 将生成 GUI 的快照,并在主窗口中打开该快照。
[.feature]
--
image::images/debug-fullscreen.png[role="left", link="images/debug-fullscreen.png"]
--
在本可视调试器指南中,您不会用到“调试”窗口。
== 使用可视调试器
GUI 快照是一种可帮助您找到 GUI 组件的源代码的可视调试工具。GUI 组件的源代码有时可能很难找到,不过快照可以让您根据 GUI 找到代码,而不用搜索代码。您可以在快照中选择组件并从弹出式菜单中调用任务,以便查看组件的源代码、显示监听程序,并在组件上设置断点。
=== 找到组件的源代码
本练习将说明如何使用 GUI 快照导航至源代码中声明并定义组件的行。在 GUI 快照中选择组件时,可以使用弹出式菜单调用各种命令。
命令还可以通过“导航器”窗口调用,方法是右键单击组件,然后在弹出式菜单中选择命令。
1. GUI 快照中,选择 "Guess" 按钮。
在快照中选择组件时,IDE 会在 "Properties"(属性)窗口中显示有关选定组件的详细信息。如果 "Properties"(属性)窗口不可见,您可以从主菜单中选择 "Window"(窗口)> "Properties"(属性)以打开该窗口。
image::images/debug-snapshot.png[title="GUI 快照"]
IDE 还会在 "Navigator"(导航器)窗口的窗体分层结构中显示组件的位置。
image::images/debug-navigator.png[title="GUI 快照"]
. 在快照中右键单击 "Guess" 按钮,然后从弹出式菜单中选择“转至组件声明”。
选择 "Go to Component Declaration"(转至组件声明)时,IDE 将在编辑器中打开源文件,然后将光标移至代码中声明 ``guessButton`` 的行。
image::images/debug-gotodeclaration.png[title="声明组件的代码行"]
. 在快照中再次右键单击 "Guess" 按钮,然后选择 "Go to Component Source"(转至组件源文件)。
选择 "Go to Component Source"(转至组件源文件)时,IDE 将在编辑器中打开源文件,然后将光标移至 JButton 组件源代码中的相应行。
image::images/debug-gotosource.png[title="组件的源代码行"]
可以使用 GUI 快照中的 "Go to Hierarchy Addition"(转至分层结构其他源文件)命令查找源代码中将组件添加到其容器的行。默认情况下禁用 "Go to Hierarchy Addition"(转至分层结构其他源文件)命令。您可以在 "Options"(选项)窗口中启用此命令。
1. 打开 "Options"(选项)窗口。
2. 单击 "Options"(选项)窗口中的 "Java" 类别下的 "Java Debugger"Java 调试器)标签。
*注:*在 NetBeans IDE 7.1 中,"Java Debugger"Java 调试器)标签位于 "Options"(选项)窗口中的 "Miscellaneous"(其他)类别下。
. 在类别列表中选择“可视调试”,然后选择*跟踪组件分层结构更改的位置*。单击 "OK"(确定)。
. 停止调试会话(如果正在运行)。
*注:*在 "Options"(选项)窗口中启用此命令后,需要重新启动调试会话并生成新的 GUI 快照,然后才能使用 "Go to Hierarchy Addition"(转至分层结构其他源文件)命令。
. 启动新的调试会话并生成 GUI 快照。
. GUI 快照中右键单击组件,然后选择“转至分层结构其他源文件”。
IDE 将在编辑器中添加组件的行上打开源代码。
image::images/debug-hierarchy.png[title="将组件添加到容器中的源代码行"]
=== 浏览组件事件
本练习将演示如何使用 GUI 快照和 "Events"(事件)窗口浏览组件事件,便于您找到组件监听程序以及由组件触发的事件。
1. 在快照中右键单击 "Guess" 按钮,然后从弹出式菜单中选择 "Show Listeners"(显示监听程序)。
选择 "Show Listeners"(显示监听程序)时,IDE 将会打开 "Events"(事件)窗口。您可以看到 "Custom Listeners"(定制监听程序)节点已展开。
image::images/debug-customlisteners.png[title="将组件添加到容器中的源代码行"]
. 右键单击 "Custom Listeners"(定制监听程序)节点下方的 *com.toy.anagrams.ui.Anagrams$3*,然后在弹出式菜单中选择“转至组件源文件”。
源代码在编辑器中定义监听程序的行上打开。
. 在快照中选择空文本字段。
此外,也可以在“导航器”窗口中选择 ``guessedWord`` 文本字段。
选择文本字段时,“事件”窗口中的项将会自动更改,以显示选定组件的监听程序。
. 在“事件”窗口中,双击 "Event Log"(事件日志)节点打开 "Select Listener"(选择监听程序)窗口。
此外,也可以右键单击 "Event Log"(事件日志)节点,然后从弹出式菜单中选择 "Set Logging Events"(设置日志记录事件)。
. 从对话框中选择 ``java.awt.event.KeyListener`` 监听程序。单击 "OK"(确定)。
image::images/debug-select-listener.png[title="将组件添加到容器中的源代码行"]
此监听程序现在正在监听文本字段中的键盘事件。
. Anagram Game 应用程序的文本字段中,键入一些字符。
在文本字段中键入字符时,将在事件日志中记录事件。如果展开 "Event Log"(事件日志)节点,您可以看到现在记录了每个击键。每次在 Anagram Game 应用程序文本字段中键入时,都会显示新事件。如果展开单个事件,例如 ``keyPressed`` ,日志中会显示该事件的属性。
image::images/debug-eventlog.png[title="将组件添加到容器中的源代码行"]
如果针对事件展开“调用自...”节点,您可以看到该事件的堆栈跟踪。
本教程简单介绍了 IDE 中的可视调试器。通过可视调试器,可以轻松找到 GUI 组件的源代码和日志事件。这在调试 GUI 应用程序时极其有用。
link:https://netbeans.org/about/contact_form.html?to=3&subject=Feedback:%20Using%20the%20Visual%20Debugger[+发送有关此教程的反馈意见+]
== 另请参见
有关在 NetBeans IDE 中开发和测试 Java 应用程序的更多信息,请参见以下资源:
* link:gui-functionality.html[+构建 Java GUI 应用程序简介+]
* 演示:link:debug-visual-screencast.html[+使用可视调试器+]
* 演示:link:debug-multithreaded-screencast.html[+调试多线程应用程序+]
* 演示:link:debug-stepinto-screencast.html[+NetBeans 调试器中的可视“步入”操作+]
* 演示:link:debug-deadlock-screencast.html[+使用 NetBeans 调试器进行死锁检测+]
* 演示:link:debug-evaluator-screencast.html[+在 NetBeans 调试器中使用代码片段计算器+]
* link:../../trails/java-se.html[+基本 IDE Java 编程学习资源+]