阅读更多

10顶
1踩

编程语言

原创新闻 Swing Explorer介绍

2008-04-22 09:02 by 正式记者 cjnajr 评论(0) 有9675人浏览

试Swing应用时的常见陷阱
      调试Swing应用并不总是那么容易。由于swing是可视化的应用,所以你不可能写一个自动测试的程序来检测你的用户界面(UI)是否看起来不错,或者所有的组件是否都大小合适,颜色正确,而且还显示了应该显示的信息。通常你都只能够运行这个swing程序,看看屏幕上是否是你想要的样子。
     Ouch,我的屏幕看起来和我期望的不一样!
     呵呵,我们的问题开始了。让我们先来看看一些调试的例子吧。
     例1:我没有看见应该在JFrame上的组件
     可能的原因:

  • 没有把组件设置成“visible(可见的)”。
  • 忘记添加组件到容器上了。
  • 或者重载(override)了组件的paintComponent方法却忘记了写必要的代码,以至于尽管组件在正确的位置也无法显示。

    例2.两年前,同事和我开发了一个面板(panel)。我甚至不知道怎样构造这个组件。为什么它不在它应该呆的位置呢?为什么它会左移了5个像素呢?

    例3.我打算用java调试器(java debugger)一步一步地来调试我的程序,观察一下每当我往JFrame上添加一个组件时会发生什么。

    接下来,开始调试一下JFrame的代码吧。简单的代码如下所示。首先我们会展示一个空白的JFrame(setVisible(true)) ,接着一步一步地添加组件。然后,我们会设置一些断点(breakpoint)来看看UI的每一次改变都会发生什么。

 

public class FrameTest extends JFrame implements Runnable { public static void main(String[] args) { SwingUtilities.invokeLater(new FrameTest()); } public void run() { // this method runs in AWT dispatch thread setBounds(100, 100, 100, 100); setVisible(true); add(new JLabel("Hello")); // <-- 在此设置断点 add(new JTextField("Hello")); // 在此观察UI是否改变 } }


   

 

9ab1d637-6dc0-35e7-b0b1-362494af8980-thumb

    由于断点设置在添加组件之前,所以组件暂时不会显示出来。

     例4.我看见右上角有一个小圆点,为什么会出现这种情况呢?

     这种情况也很常见。一些组件由于计算不正确会导致一些点显示不正确。这样的情况如下图所示。

 

    好吧,这样的问题还有很多,所以就不要再看这些例子了。下面来谈谈如何来处理这些问题。

我们该怎么办?

    为了调试上面罗列的问题,通常需要做一些事情:

  • 插入一些调试代码块测试指定元件的位置,大小和可见性
  • 在运行时改变某些组件的边界颜色(或类似属性)以区别不同的组件
  • 使用debuggraphics自动描绘一些图形信息

    所有的这些方法都需要改写代码,然后在控制台中执行和检查。如果在运行时很多地方都需要改变的话,这些方法通常都很难跟踪分析。开发者就必须懂得在控制台中展示的内容和显示在屏幕上画面的联系和区别,但是这通常都不是很人行的做法。所以,开发者就需要一个可以交互的工具,可以在运行时提供关于UI程序的必要信息。

    我要介绍的这类工具叫做Swing Explorer。你可以在以下链接下载:swexpl.jar

    下图是一个swing程序的例子,我们可以把它加载到swing explorer中来测试一下各项特性。 

    加载的命令是java -cp swexpl.jar org.swingexplorer.Launcher sample.FRMPerson ,其中sample.FRMPerson是该swing 应用程序的启动类。

 

    加载之后如下图所示,它可以显示该应用的所有顶级容器,并以树形结构展示所有组件的层次关系。

 

 

 

    至于swing explorer的其他特性,你完全可以在使用的时候慢慢感受了。这里就略去不叙了。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10
1
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Spring核心概念(控制反转IOC、代理、面向切面AOP)

    Spring核心概念 提出疑问 企业级系统: 大规模:用户数量多、数据规模大、功能众多 性能和安全要求高 ...Spring解决了开发者在J2EE(后改名为javaEE)开发中遇到的许多常见的问题,提供了功能强大IOC(控制反

  • Spring框架 IOC/DI AOP 常用注解总结

    文章目录前言1.Spring1.1Spring介绍1.2传统项目开发的弊端1.2.1编辑Dog类1.2.2编辑Cat类...IOC(Inversion of Control)1.4.1 面向接口编程弊端1.4.2 IOC调用原理图1.5 Spring-IOC 入门案例1.5.1 准备Dog类1.5.2 准备spri

  • 《Spring3.X企业应用开发实战》学习笔记--IoC和AOP

    在日常的开发中,最近几年正在使用着Spring,过去几年中,使用过Spring.Net,从官方文档及互联网博客,看过很多Spring文章,出于各种原因,没有系统的进行Spring的学习,这次通过这本书系统的学习了Spring框架,很多...

  • spring5-介绍Spring框架

    Spring可以让您从“plain old Java objects”(POJO)中构建应用程序和通过非侵入性的POJO实现企业应用服务。此功能适用于Java SE的编程模型,全部的或部分的适应Java EE模型。 2.1依赖注入和控制反转 Java应用程序-...

  • tapestry教程

    1、web.xml一般来说,使用Tapestry需要在Tapestry中添加2项内容A、 tapestry.app-package com.demo 这个配置也比较重要,这个配置项告诉Tapestry去哪个package下面去找页面、组件、服务等东西。在源代码中需要...

  • tapestry 初学 转载

    一般来说,使用Tapestry需要在Tapestry中添加2项内容 A、 tapestry.app-package com.demo 这个配置也比较重要,这个配置项告诉Tapestry去哪个package下面去找页面、组件、服务等东西。 在源代码中...

  • spring框架_IOC_DI_AOP_MVC

    本文注解总结:注解收录集 一.Spring介绍 Spring框架是一个开放源代码的...Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此

  • Spring5文档翻译(一)-Spring入门和简介

    现存的前端如Struts,Tapestry,JSF或其他UI框架都可以同基于Spring的中间层整合在一起,从而使你能过使用Spring事务功能。你只需要使用 ApplicationContext 连接你的业务逻辑以及通过 WebApplicationContext 整合你...

  • tapestry入门(翻译)3 导入项目到eclipse

    http://tapestry.apache.org/loading-the-project-into-eclipse.html     首先让maven为我们创建eclipse的项目文件(.classpath and .project)   $ mvn eclipse:eclipse -DdownloadSources=true [INFO] ...

  • Spring5学习记录

    超详细的!...​3.Spring有两个核心部分,并不是只有这两个IOC和Aop(1)IOC控制反转,把创建对象过程交给Spring进行管理(2)Aop面向切面,不需要修改源码进行功能增强​Spring..................

  • 一个月面了几家大厂 总结了5W字的后端面经

    ... 提取码:c8jr Spring Spring框架的七大模块 ...Spring Core:框架的最基础部分,提供 IoC 容器,对 bean 进行管理。 Spring Context:继承BeanFactory,提供上下文信息,扩展出JNDI、EJB、电子邮件...

  • 大学四年,工作2年我总结了后端面试的所有知识点(持续更新)

    注:如果图被压缩了,可以去公众号【三太子敖丙】回复【复习】获取原图 Spring Spring框架的七大模块 Spring Core:框架的最基础部分,提供 IoC 容器,对 bean 进行管理。 Spring Context:继承BeanFactory,提供上...

  • Spring源码深度解析:一、Spring整体架构和源码环境搭建

    Spring Core:框架的最基础部分,提供 IoC 容器,对 bean 进行管理。Spring Context:继承BeanFactory,提供上下文信息,扩展出JNDI、EJB、电子邮件、国际化等功能。Spring DAO:提供了JDBC的抽象层,还提供了声明性...

  • 现在常用的java框架有哪些

    加入eclipse后,eclipse会自动下载对应源代码,最好换个国内源,需要一定的磁盘空间,一定网速,可能有上g,下载的jar包大约有800多个,我的.m2文件夹jar包全部有5个g左右(经过长期积累可能比下面的要多)。...

  • 《Spring 5 官方文档》1. Spring入门指南

    spring-web模块提供基本的面向Web的集成功能,例如多部分文件上传功能,以及初始化一个使用了Servlet侦听器和面向Web的应用程序上下文的IoC容器。它还包含一个HTTP客户端和Spring的远程支持的Web相关部分。 spring-...

  • 基于FPGA的四相八拍步进电机控制系统设计:集成交付、正反转、加速减速及调速功能

    内容概要:本文详细介绍了基于FPGA的四相八拍步进电机控制系统的开发过程。主要内容包括:1. 使用VHDL和Verilog编写LED显示屏驱动代码,用于显示角度、学号和姓名等信息;2. 实现步进电机的正反转控制,通过状态机管理相序变化;3. 开发加速减速控制模块,确保电机启动和停止时的平稳性;4. 设计调速功能,通过调节脉冲频率实现速度控制。此外,文中还讨论了调试过程中遇到的问题及其解决方案。 适合人群:对FPGA开发和步进电机控制感兴趣的电子工程师、嵌入式系统开发者以及相关专业的学生。 使用场景及目标:适用于需要高精度运动控制的应用场合,如工业自动化、机器人技术和精密仪器等领域。目标是帮助读者掌握FPGA控制步进电机的基本原理和技术细节。 其他说明:文中提供了详细的代码片段和调试经验分享,有助于读者更好地理解和应用所学知识。同时,作者还提到了一些实用技巧,如通过PWM调节实现多级变速,以及如何避免步进电机的共振问题。

  • Android开发:基于SQLite的日历备忘录记事本项目详解与实现

    内容概要:本文详细介绍了基于Android Studio开发的日历备忘录记事本项目,涵盖日历查看、添加备忘录、闹钟提醒和删除备忘录等功能。项目使用SQLite数据库进行数据存储,通过CalendarView、EditText、Button等控件实现用户交互,并利用AlarmManager和PendingIntent实现闹钟提醒功能。此外,项目还包括数据库的设计与管理,如创建DatabaseHelper类来管理数据库操作,确保数据的安全性和完整性。文章还探讨了一些常见的开发技巧和注意事项,如时间戳的使用、手势监听的实现等。 适用人群:适用于初学者和有一定经验的Android开发者,尤其是希望深入了解Android开发基础知识和技术细节的人群。 使用场景及目标:该项目旨在帮助开发者掌握Android开发的基本技能,包括UI设计、数据库操作、闹钟提醒机制等。通过实际项目练习,开发者能够更好地理解和应用这些技术,提升自己的开发能力。 其他说明:文中提到一些进阶任务,如用Room替换SQLite、增加分类标签、实现云端同步等,鼓励开发者进一步扩展和优化项目。同时,项目源码公开,便于学习和参考。

  • Matlab实现基于SVM-Adaboost支持向量机结合Adaboost集成学习时间序列预测的详细项目实例(含完整的程序,GUI设计和代码详解)

    内容概要:本文档详细介绍了一个基于SVM(支持向量机)和Adaboost集成学习的时间序列预测项目。该项目旨在通过结合这两种强大算法,提升时间序列预测的准确性和稳定性。文档涵盖了项目的背景、目标、挑战及其解决方案,重点介绍了模型架构、数据预处理、特征选择、SVM训练、Adaboost集成、预测与误差修正等环节。此外,文档还探讨了模型在金融市场、气象、能源需求、交通流量和医疗健康等多个领域的应用潜力,并提出了未来改进的方向,如引入深度学习、多任务学习、联邦学习等先进技术。 适合人群:具备一定机器学习基础的研究人员和工程师,特别是那些从事时间序列预测工作的专业人士。 使用场景及目标:①用于金融市场、气象、能源需求、交通流量和医疗健康等领域的复杂时间序列数据预测;②通过结合SVM和Adaboost,提升预测模型的准确性和稳定性;③处理噪声数据,降低计算复杂度,提高模型的泛化能力和实时预测能力。 其他说明:文档不仅提供了详细的理论解释,还附有完整的Matlab代码示例和GUI设计指导,帮助读者理解和实践。此外,文档还讨论了模型的部署与应用,包括系统架构设计、实时数据流处理、可视化界面、GPU加速推理等方面的技术细节。

  • #游戏之追逐奶酪123

    #游戏之追逐奶酪123

  • 威纶通触摸屏配方管理系统解析:宏程序、数据结构与UI设计

    内容概要:本文详细介绍了威纶通触摸屏配方管理系统的实现方法及其应用场景。首先,文章讲解了配方管理的基本概念和技术背景,强调了配方管理在工业自动化中的重要性。接着,通过具体的宏程序代码示例,展示了如何实现配方的保存、加载以及安全校验等功能。文中还提到配方数据结构的设计,如使用寄存器地址偏移来确保数据不冲突,并通过CSV文件格式方便地管理和维护配方数据。此外,文章深入探讨了UI设计方面的内容,包括动态图层技术和按钮交互效果的应用,使得用户界面更加友好和直观。最后,作者分享了一些实际项目中的经验和技巧,如文件操作的异常处理和宏指令调试方法。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对触摸屏配方管理系统感兴趣的读者。 使用场景及目标:适用于需要频繁切换设备参数的生产环境,如食品加工、注塑成型等行业。通过使用威纶通触摸屏配方管理系统,可以提高工作效率,减少人为错误,同时简化设备调试和维护流程。 其他说明:附带的工具包提供了完整的宏指令注释版、图库资源和调试工具,帮助用户更好地理解和应用该系统。

Global site tag (gtag.js) - Google Analytics