我在计算机中编写的一些 Swing 代码在我同事的计算机、PC 和笔记本中的行为有所不同。
我想知道,我可以对我的 Swing 应用程序在每台计算机上的行为做些什么吗?
我想确保我在我的计算机上测试过的算法在我的客户端计算机上以相同的方式工作。
例如 ,聚焦问题 JTextField在我使用 Windows XP 的笔记本中运行良好,但在我同事的使用 Windows XP 的计算机中无法正常工作,在我使用 Ubuntu 的工作计算机中也无法正常工作。
观察 具体的 JTextField 问题不是这个问题的主题。
Swing 应用程序在不同平台上的问题很常见,它们是由一个简单的事实引起的,即无论 Java 提供什么抽象级别,它都必须在某个时候与底层操作系统的本机组件打交道。事件虽然 Swing 仅使用窗口(框架)并自行绘制所有内容 - 差异非常普遍。
我开发了一个多平台 Swing 应用程序 - Windows 上的用户报告了 Linux 用户没有的各种问题,反之亦然。可悲的是,对于此类问题没有灵丹妙药——广泛的测试和讨厌的修复是镇上唯一的游戏。
在可插拔的外观和感觉方面,一切都变得异常糟糕和肮脏。例如 - 使用 metal 或 nimbus 调整 JSplitPane 的大小非常快(正如预期的那样),但是如果您使用 GTK+ plaf,一切都会变得糟糕。这是一个更严重的(性能)问题——视觉问题(缺少边框、组件不适合容器等)没有尽头……尽管如此,Swing 仍然是多平台桌面应用程序的最佳选择之一。