Project Matisse:在 Mac OS X 上开发 GUI

2024-01-18 02:32
文章标签 开发 mac gui os project matisse

本文主要是介绍Project Matisse:在 Mac OS X 上开发 GUI,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

NetBeans 5.0 是一种全面的 Java 开发工具,它支持各个层次(包括客户端、服务器端、嵌入设备)的 Java 开发。它是免费和开放源码的,位于:www.netbeans.org。为了让经验丰富的程序员和入门级的程序员在 Macintosh 上使用 NetBeans 时都同样能体会到极大的乐趣,NetBeans 开发人员花费了很多的努力。NetBeans 集成开发环境 (IDE) 提供了许多开箱即用的功能,其范围要远远超过可在任何其他免费 Java 开发工具中使用的功能。由于 NetBeans 是用 Java 编写的,因此它可在任何平台上运行。本文将演示使用 Matisse 创建一个用户界面,用户界面生成器是 5.0 版的一大亮点。使用 Project Matisse,用户只需通过拖放就能创建真正的跨平台 UI

创建跨平台用户界面所面临的挑战

任何 Macintosh 用户都曾遇到过从其他操作系统移植的应用程序,而这些应用程序的外观在他们的桌面上不是十分合适。大部分供应商不希望针对每一种操作系统完全重新编写他们的应用程序。Desktop Java 应用程序对这个问题特别敏感,因为虽然它们从本质上就是跨平台的但是仍有一些细微处能够反映出某个应用程序的外观是否适合每个平台。

幸运的是Apple 提供了一个优秀的用户界面设计原则集合它可以帮助设计Mac友好的Mac-friendly UI。实际上,违反这些原则通常会导致应用程序的外观“Mac友好的”

Swing UI 工具套件非常注意确保您的 UI 组件在 Macintosh 上看起来是合适的但除了可爱的蓝色按钮还有其他更多方面是Mac友好的。其他的细微之处之一是组件间距。对于组件之间应当保持多远的距离以及它们与所在窗口边缘之间的距离,每个平台都有不同的推荐方案。使用 NetBeans 5.0 Matisse,您只需在 Macintosh 上设计一次您的 UI,就会发现它也同样符合其他平台上的这类原则 – Matisse 不仅使得 Java UI 的设计比过去更加简单,而且使跨平台 UI 设计成为了现实,而这一切只需拖放这么简单。

过去,在 Java 中布局表单十分困难。有一些布局管理器拥有不寻常的强大功能,但却不容易使用 GridBagLayout,而其他的各种其他布局管理器都有它们自己的用途和限制。Matisse NetBeans 5.0 中的 UI 生成器,它使用了一种独特的、开放源码的布局管理器。它将包括在 JDK 6 中,可以与您的应用程序装配到一起,以简单快捷地创建出外观漂亮、跨平台的用户界面。它应与 JDK 1.4 及以上版本一起工作。

使用 Project Matisse

要开始使用 Matisse,只需在项目中创建一个新的 JPanel 表单您可以转到 File | New File 菜单项,也可以右键单击(或按住 Ctrl 键单击) Java 包,然后选择 JPanel Form

此操作将创建一个新的 Java 源文件它会扩展 javax.swing.JPanel 并打开 MatisseGUI 编辑器 -  然后您就可以从右部出现的 palette 中向表单上拖放组件。

这个屏幕快照显示了沿着表单左上部边缘的虚线基准线guide lines);将一个组件拖到此表单上,它将对齐到合适的位置。例如,在 Component Palette 中单击 JLabel 项目,将把组件拖到合适位置,然后单击。这些基准线很特殊只有 Matisse 才能提供因为它们表示 Apple Apple用户界面设计原则中推荐的窗口组件与边缘之间的距离。(如果不想让组件对齐到合适位置,请在放置组件之前按下 Option 键)。

实际上还有更多的功能。特定于 Macintosh 的定位只是创建特定于平台用户界面问题的一个示例:您不会希望将特定于 Macintosh 的间距用在其他任何地方,而只是用在 Macintosh上。否则的话,您的用户将会得到同样的体验 -- UI Linux Windows 上看起来很不自然正如您在 Macintosh 运行一个失败的移植应用程序一样。这肯定不是 UI 设计工具的目的它不应当创建仅能在设计它的计算机上看起来很棒的 UINetBeans 针对所有平台解决了这个问题。在下面的部分中,我们将向您讲解这个问题是如何解决的。

创建跨平台 UI

Project Matisse 在运行过程中计算间距布局管理器知道它正在运行的是哪种平台而且它知道针对每种平台的用户界面设计建议。如果您在 GTK 外观下的 Linux 上编译此用户界面并运行它,那么,间距将是 GTK 的用户界面原则中所建议的间距。对于 Microsoft Windows 或者 Java 外观 (Metal) 也是一样:您的 UI 将符合 Sun Java 外观设计原则。只需在标签上拖放,您就已经获得了一个用户界面,它将完成正确的操作,而且对于任何平台上的任何用户来说都会感觉很舒服。

使用 Project Matisse您的应用程序在任何平台上看起来都会很合适而不仅仅是您设计它时所用的平台。

添加更多组件

大部分用户界面都比单一的标签组件更复杂,所以让我们继续添加更多组件。例如,我们要创建一个简单的客户信息编辑屏幕。下一步将添加用户可以输入某些文本的文本字段。这个操作还是简单地选择、拖放。

上面的屏幕快照上还多出来了两条基准线。垂直线与指引我们拖动 JLabel 的线非常类似。Matisse 自动建议 Apple 为表单组件所推荐的间距值。当您的应用程序部署之后,它将自动按照应用程序所运行的任何平台调整出合适的间距。UI不是硬编码的,而且它不会只是因为您是在 Macintosh 平台上进行开发就看起来像是特定于 Macintosh 的界面 - 这是一个真正的跨平台 UI

Matisse 用来提供帮助的另一条基准线是水平线。这条线表示字体基线。人们以直线方式读取文本 - 实际上有一个原因是书中仍然在使用 Serif 文本,衬线(字母上下两端的细线)实际上有助于眼睛查看文本。如果您想让某些人以更慢的速度阅读某些内容,

您通过一个小实验就能证明这个结果。不幸的是,许多用户界面看起来是这样的:

如果我们创建了这样的 UI,那么说明开发人员在不经意间折磨着我们的用户!当然,每个阅读本文的人都知道这个字段是用来填写人员姓名的。但是,您是否花费了稍微长一点的时间来处理这个图像呢?而且这样的一个 UI 将会如何影响用户对应用程序质量的看法呢?实际上,这些微妙的差异会使您的应用程序与其他应用程序拉开距离。在竞争激烈的市场中,它就麻烦了。您可以自己考虑一下,您是愿意使用您能够获得 mp3 文件的网站还是愿意使用 iTunes

如果您使用带有 Project Matisse NetBeans您的问题就能得到永久解决。这是很明显的。您所要做的工作就是拖放。Matisse 了解字体基线(即使两个组件不是在相同的高度),它可以按照字体基线在任何平台上、以任何字体大小准确地对齐。您要做的工作就是利用此功能在出现水平基准线时拖动鼠标按钮。

当然您可以使用 GridBagLayout 执行这一切但是它需要大量的技巧和工作量。您可能需要使用offscreen Graphics 对象计算像素偏移量然后用偏移量来计算您对任何给定组件的 GridBagLayout 提供的插入位置根据相互的字体基线计算错误中心。所有开发人员都必须为了创建一个真正跨平台的 UI 而额外进行这些工作。现在,您再也不需要这样做了。使用 NetBeans 5.0 & Matisse,通过它的拖动、放置功能,您就可以获得一个 UI,这在任何平台上都是一项轻松愉快的工作。

完成 UI

让我们继续将它转化为一个实际的用户界面。我们只需拖放更多组件,并使用 Matisse 对齐准线(snap-to-guide line在合适的位置放置组件,即可完成此操作。Matisse 将显示组件之间的关系,

添加更多组件的过程实际上也反映了 Matisse 是一个非常强大的 UI 设计工具上面屏幕快照中的所有组件都包含了用户预期的实际调整行为,它使 UI 在不同的平台和字体大小上看起来都是合适的。您的用户将体验到一个看起来像是专门为他们的环境而设计的应用程序,而不管他们是在哪种平台上运行。

超越 Desktop Java

本文强调了 NetBeans 5.0 中的桌面 Java 支持但只是讲述了 NetBeans 为服务器端和其他 Java 开发人员所提供支持的冰山一角。NetBeans 具有开箱即用的功能,以及对 Java Enterprise Edition 开发的无可比拟的支持。您可以立即下载绑定了应用程序服务器的(Sun Java System 的应用程序服务器、aka 的开放源码 Project Glassfishaka J2EE Reference ImplementationNetBeans,开箱即用的 J2EE 的应用程序开发。虽然 NetBeans 从插件体系结构和各种开发社区 第三方插件中获益,但您只需下载 NetBeans IDE 就能为提供进行重大开发的所需的一切,无需任何附加的配置或下载。

NetBeans 开放源码项目

NetBeans 开发源码项目由 Sun MicrosystemsJava 语言的编写者提供赞助。它位于 netbeans.org源代码的首页以及 NetBeans 用户和创作者的一个活动社区。这里有各种可作为 IDE 用户资源的邮件列表,也有开发列表(您可以在这里对 NetBeans 项目的未来方向提供建议),您还可以自己投稿。所有这些列表也可以在 news.gmane.org 上通过 newsreader 访问。NetBeans IDE 可以从 netbeans.org 下载。

更多信息

Matisse Demo 动画演示

Matisse GUI Builder Quickstart Tutorial (zip)

Developing for Java with NetBeans 4.1 on Mac OS

Project Matisse (NetBeans GUI Builder)

查看本文英文来源:http://www.netbeans.org/kb/50/applematisse.html




这篇关于Project Matisse:在 Mac OS X 上开发 GUI的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/617875

相关文章

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示