[原创]搭建桌面应用程序原型(第二部分)

原创 2004年08月31日 22:45:00

[原创]搭建桌面应用程序原型(第二部分)

设置系统外观

下面的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();
}


加载和保存图片

一个完成的产品将用文件对话框去加载一个源图片并且保存一个注释过的图片。在观念上,“文件打开”对话框将让拥护预览图片,“文件保存”对话框将允许他们去提供不同的参数,例如保存图片的压缩质量。Swing的标准文件对话框是基于组件JFileChooser,这个组件能够通过setAccessory()方法进行自定义,让你在文件对话框上加载你的组件。
在原型安例中,注意力应该在主要功能上。因此,原型通过从命令行获得加载和保存路径代替用自定义的文件对话框。javax.imageio.ImageIO类简单的read()和write()方法被用于加载和保存图片。注意,Image IO API让你知道哪种图象格式是支持的,并且你能设置例如压缩质量的参数。对于自定义文件对话框也将需要这些性质。
loadImage()方法读取一个图片文件,路径是由命令行第一个参数提供的,并且设置主要panel的背景图片:

private void loadImage() {
    if (args.length >= 1)
        try {
            File file = new File(args[0]);
             BufferedImage image = ImageIO.read(file);
             mainPanel.getPaintView().getModel().setBackImage(image);
        } catch (IOException x) {
             log(x);
        }
}


saveImage()方法获得一个主要panel的注释过的图片,并且把这个图片保存到一个文件里,路径是由命令行提供的第二个参数给出的:

private void saveImage() {
     if (args.length >= 2)
         try {
             File file = new File(args[1]);
             String name = file.getName();
             int k = name.lastIndexOf('.') + 1;
             String ext = name.substring(k);
             BufferedImage image
                 = mainPanel.getAnnotatedImage();
             ImageIO.write(image, ext, file);
         } catch (IOException x) {
             log(x);
         }
}

[原创]搭建桌面应用程序原型(第一部分)

[原创]搭建桌面应用程序原型(第一部分)作者:Andrei Cioroianu译:ODT原文:http://www.onjava.com/pub/a/onjava/2004/04/28/desktop...
  • iceandfire
  • iceandfire
  • 2004-08-31 22:44:00
  • 799

[原创]搭建桌面应用程序原型(第三部分)

[原创]搭建桌面应用程序原型(第三部分)做技术决定在开发过程中,我不得不去解决一些技术问题并且要做一些技术决定。下面的代码片段仅仅简单的进行了解释,但是他们将在我以后的文章中被详细描述。在这里重要的是...
  • iceandfire
  • iceandfire
  • 2004-08-31 22:46:00
  • 656

搭建Java桌面应用程序原型

  • 2007年06月06日 11:51
  • 79KB
  • 下载

第四章 :构建你的应用程序原型

第四章 :构建你的应用程序原型译者注:由于本人英语水平有限,尽可能描述出作者的本意。如有错误,及时指出。文中会省略部分技术无关的赘述“It’s not about ideas. It's about ...
  • u010586842
  • u010586842
  • 2015-09-13 00:01:59
  • 1018

VB.NET实现的控制外部应用程序窗口或控件行为的函数源程序

与大家分享几个VB.NET实现的控制外部应用程序窗口或控件行为的函数源程序代码。其中包括时间延迟的处理,窗口类或窗口名称的获得可以利用Visual Studio Tools中的Spy++来得到。函数的...
  • Suprman
  • Suprman
  • 2009-12-21 13:54:00
  • 3002

5款Windows 界面原型设计工具

转自:http://www.oschina.net/project/tag/291/ui-design?lang=36&os=0&sort=view 界面原型图绘制工具 Pencil ...
  • kupe87826
  • kupe87826
  • 2014-02-25 20:52:06
  • 5373

桌面应用程序与web应用程序

简单而言,在本地有应用程序文件的应用,都是桌面应用,在浏览器中使用的应用都是web应用。 原理上而言: 桌面应用有自己独立的进程与操作系统进行消息通讯,操作系统对事件进行检测,传递给桌面应用进程,...
  • widenstage
  • widenstage
  • 2017-10-25 10:36:54
  • 241

c++primer_第二部分学习的感觉

c++primer已经看了一个月了,真是痛苦的过程,看到13,14,15章真心头大,主要是代码敲的少,讲的内容太抽象。以后要多多敲代码,+油!...
  • turesla
  • turesla
  • 2016-10-29 21:25:26
  • 89

python进行桌面程序开发(GUI),开发环境搭建

用python进行桌面程序开发(GUI),开发环境搭建本主要是介绍开发软件和下载地址,具体安装和使用,请移步度娘。第一步:安装python 安装地址:http://www.python.org/d...
  • u010445540
  • u010445540
  • 2016-09-19 14:12:12
  • 9455
收藏助手
不良信息举报
您举报文章:[原创]搭建桌面应用程序原型(第二部分)
举报原因:
原因补充:

(最多只允许输入30个字)