阅读更多

10顶
1踩

编程语言

原创新闻 Swing Explorer介绍

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

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

  • 技术运维-机房巡检表及巡检说明

    技术运维-机房巡检表及巡检说明

  • 第四次算法分析与设计整理

    第四次算法分析与设计整理

  • 图像处理_U2Net_优化模型大小_工程化部署方案_1741785598.zip

    图像处理项目实战

  • jaxlib-0.4.18-cp311-cp311-macosx_11_0_arm64.whl

    该资源为jaxlib-0.4.18-cp311-cp311-macosx_11_0_arm64.whl,欢迎下载使用哦!

  • 视频点播系统完美版源码前后端分离开源版.zip

    搭建说明. 运行环境 php5.6 mysql5.6 扩展sg11 前置条件: 前后端分离,需要准备两个域名,一个后台域名,一个前端域名 后端源码修改(cs2.ijiuwu.com批量替换改为你的后端域名)数据库修改(cs3.ijiuwu.com批量替换为你的前端域名)1、创建后台站点,上传后台源码并解压到根目录2、创建前端站点,上传前端源码并解压到根目录 3、创建数据库上传并导入数据库文件 4、修改数据库信息: 后台:app/database.php 前端:application/database.php 前端站点设置 伪静态thinkphp 运行目录public 关闭防跨站 访问后台域名/admin.php进入后台管理 admin 123456 系统-》系统设置-》附件设置-》Web服务器URL 改为你的前端域名 系统-》清前台缓存 改为你的前端域名 点击刷新缓存

Global site tag (gtag.js) - Google Analytics