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

相关文章

Agent开发核心技术解析以及现代Agent架构设计

《Agent开发核心技术解析以及现代Agent架构设计》在人工智能领域,Agent并非一个全新的概念,但在大模型时代,它被赋予了全新的生命力,简单来说,Agent是一个能够自主感知环境、理解任务、制定... 目录一、回归本源:到底什么是Agent?二、核心链路拆解:Agent的"大脑"与"四肢"1. 规划模

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同