搭建Java桌面应用程序原型(二)

设置系统外观

下面的setSystemLookAndFeel()方法调用了javax.swing.UIManager类的setLookAndFeel()方法:

它要求Swing从默认的Metal外观转换为本地外观:

private void setSystemLookAndFeel() {
  try {
   UIManager.setLookAndFeel(
    UIManager.getSystemLookAndFeelClassName());
  } catch (UnsupportedLookAndFeelException x) {
   log(x);
  } catch (ClassNotFoundException x) {
   log(x);
  } catch (IllegalAccessException x) {
   log(x);
  } catch (InstantiationException x) {
   log(x);
  }
}

通常,因为setLookAndFeel()参数都有一个可用值所以不会抛出异常。然而用标准日志API任何异常都可以作为严重错误信息被记录:

private static void log(Exception x) {
  Logger.global.severe(x.getMessage());
}

原型安例中用全局日志是可以的,但是一个产品应该用它自己的日志,保存错误信息在文件中。

创建并显示主要窗口

createFrame()方法创建一个MainFrame实例,并且加载了图片:

private void createFrame() {
  mainFrame = new MainFrame();
  mainPanel = mainFrame.getMainPanel();
  mainPanel.updateSize();
  mainFrame.pack();
  loadImage();
}

updateSize()设置了由getMainPanel()获得的主要面板的合理大小。pack()方法使得主框架调整大小从而让主面板和应用程序工具栏调整到合适的大小。注意到getMainPanel()和updateSize()方法是MainFrame和MainPanel类实现的应用方法。pack()方法是从java.awt.Window中继承下来的。

showFrame()方法显示应用程序的主框架并且调用主panel的requestFocus()方法。没有调用requestFocus(),焦点将被工具栏中是缩放下拉框获得,这个组件不是框架的主要组件。当应用程序开始的时候,它的主要组件应该获得焦点,即使主要panel没有处理任何键盘事件。

在窗口关闭的时候调用setDefaultCloseOperation(),禁用这个方法的默认动作而是传递DO_NOTHING_ON_CLOSE作为参数。showFrame()方法注册自己拥有的窗口监听器以便处理窗口关闭事件。当用户关闭主要框架,监听器保存一个做过注释的图片,释放框架所占用的资源并且用System.exit(0)结束应用程序的执行。

private void showFrame() {
  mainFrame.setDefaultCloseOperation(
   MainFrame.DO_NOTHING_ON_CLOSE);
  mainFrame.addWindowListener(new WindowAdapter() {
   public void windowClosing(WindowEvent e) {
    saveImage();
    mainFrame.dispose();
    System.exit(0);
   }
  });
  mainFrame.show();
  mainPanel.requestFocus();
}

时间: 2024-11-08 19:19:23

搭建Java桌面应用程序原型(二)的相关文章

搭建Java桌面应用程序原型(一)

在这篇文章里,我将描述一个Java桌面应用的原型,我把它叫做JImageing.我打算把焦点集中在应用的框架上,解释我怎么做技术上的决定和我怎么解决在开发过程中出现的问题. 为什么要建造一个原型? 很多应用程序的开发都是由于几个原因从一个原型开始的.这些原因中的第一条就是,你必须确定用现有的技术能够满足用户的需求.例如,在不用本地代码的Swing应用程序中Windows集成不能够被实现,这就导致丧失了一些Java跨平台的优势.SWT提供了一个和操作系统有限制的集成,这就允许你在很多本地平台上运行

搭建Java桌面应用程序原型(三)

做技术决定 在开发过程中,我不得不去解决一些技术问题并且要做一些技术决定.下面的代码片段仅仅简单的进行了解释,但是他们将在我以后的文章中被详细描述.在这里重要的是去理解原型充当的角色.用你的原型去寻找技术问题的解决方案,去测试不常用的APIs,并且保证你的应用程序的性能. 用多层Panels 构建一个例如windows中的画板的图形应用程序不是非常复杂的任务.你必须处理鼠标事件.画线.画矩形和画椭圆.还要处理变形功能,比如从一个基础应用程序到一个专业级的图形编辑器要具有对图片的移动,缩放,重新排

Java桌面应用程序开发简介

Java对于服务器,个人电脑和移动设备来说是一项伟大的技术.由于需要java的跨平台的特性,因此java在服务器和移动设备方面的应用是非常成功的.但java在个人电脑应用方面的情况和在服务器及移动设备方面的应用有所不同,但是这很快就会有所改变,至少比你想象得要快.在这篇文章中,我会分析一下java在桌面环境中的应用将怎样得到提升,然后具体说一下java GUI(用户图形接口)的三个主要的工具:AWT, Swing, 和SWT..在下文中,我将会开发一个完整的java桌面应用程序. Java与桌面

通过实例学习NetBeans 6的新功能 第2部分:Java桌面应用程序

■ NetBeans 6.0 为 Java 提供的新功能和扩展功能 NetBeans 6.0 提供了众多新功能和扩展功能,众所周知的 GUI 设计器(Matisse 项目)也从 5.5 版本开始得到了极大的增强.此外,由 于整合了 Profiler, 5.5 版也变得更加容易使用.下表列出了 Java SE 的新功能和扩展功能. GUI 设计器 自动国际化功能 Java 6 界面 支持 L&F 上下文帮助 使用语言指令高亮字体 支持 JSR-296 Swing 应用程序框架 支持 JSR-295

用java写的桌面应用程序,文字显示不正常!!求助

问题描述 用java写的桌面应用程序,文字显示不正常代码上传到了网盘:http://pan.baidu.com/s/1hqkVmuw 解决方案 解决方案二:sun公司早就放弃了桌面编程的市场了,你还学?学了也没人用的,放弃吧,学点Javaweb才是java的强项解决方案三:Swing作为兴趣来耍耍还行,你如果以后要找这方面工作的,建议脱坑解决方案四:java中的GUI编程已经过时了,不过在其版本的教材中还是有专门章节的,学的时候简单的了解一下就下,有更好的界面设计语言,可以做出非常漂亮的界面,而

如何用java快速开发桌面应用程序?

问题描述 对于java的桌面应用程序开发,确实是一件很悲剧的事情,因为java开发的桌面程序界面很难控制.本人曾经用过两种方法开发桌面程序:1.纯代码版的swing开发2.matisse直接拖界面和.NET与VB差不多.第一种方法开发的速度相当的慢,第二种要快一些.但是对于我们习惯了WEB开发的程序员来说,用这两种方法开发的程序,开发速度和效果都感觉无法令人满意.于是我想到了用HTML开发界面...这样岂不是又快有好.目前我的构想是这样:java做主要逻辑处理,webkit做界面渲染,用一个si

创建一个Java应用数据库的桌面应用程序

本教程将展示如何创建一个 Java 的桌面应用程序,用来访问以及更新数据库.本教程利用 NetBeans IDE 6.0 支持的以下技术: Java 持久化 API (JPA),帮助你使用Java 代码来与数据库接合 Beans 绑定技术 (JSR 295) ,为不同的JavaBeans 控件提供一种方式来相互同步属性值.举一个例子, 你可以使用 Beans 绑定技术来保持 JTable 可视化控件中各单元的值与实体类中各域的值同步.(在这里,实体类表示数据表) Swing 应用程序框架 (JS

结合BeautyEye开源UI框架实现的较美观的Java桌面程序

BeautyJavaSwingRobot 结合BeautyEye开源UI框架实现的较美观的Java桌面程序,主要功能就是图灵机器人和一个2345网站万年历的抓取.... 挺简单而且实用的一个项目,实现出来的效果也还不错.希望可以学到知识的小可爱不对应该是帅哥,可以给我star...共勉 , github(gayhub更准确?)项目地址 https://github.com/Snailclimb/BeautyJavaSwingRobot 1,效果图: 主要界面图 机器人效果图 身份证查询效果图 2

Java桌面数据库应用程序移植到其他电脑引起的诡异异常

问题描述 我是一名java初学者,近期用netbeans6.5+sqlserver2000开发了一个带有数据库Java的桌面应用程序,该软件经过调试,在我电脑上运行正常.我的初衷是在其他电脑不装sqlserver的情况下,直接从我电脑数据库读取信息.但是当我把这个软件放到其他电脑上的时候,提示如下异常:D:VEdist>java-jarve.jar[TopLinkInfo]:2009.07.2609:53:12.099--ServerSession(1583057)--TopLink,versi