我怎样才能让一个窗口(如java.awt.Frame,javax.swing.JFrame,java.awt.Dialog,javax.swing.JDialog,等)预留屏幕的边缘,就像一个码头,任务栏,Trillian的,或者微软的OneNote可以吗?我的目标是尽可能只使用标准的JDK库.
这种行为是 Windows 操作系统特有的,因此在标准 JDK 或 AWT/Swing 中无法做到这一点,因为它们需要在许多不同的操作系统上一致地工作。
与您想要的最接近的等效方法是获取当前屏幕的边界并移动/调整窗口大小以使其与一侧齐平,尽管这现在会对桌面或其他窗口产生任何影响。
您可能会得到的最接近您想要的结果是使用JNIWrapper 和 WinPack来更改本机窗口行为。不过,他们的文档没有显示有关桌面工具栏的任何内容。您可能必须使用他们的 JNI 直接访问特定的 COM 函数,然后了解如何在 C++ 中执行此操作,但如果您不了解 C++,那可能超出了您的项目范围。
附录:
如果您想使用特定操作系统和桌面管理器的本机功能,则需要连接本机C++ 库以连接到 Gnome、KDE、Mac OS 等。搜索“Java JNI”和您要使用的窗口系统想要集成以查找可以使用的软件包。例如,对于 Gnome,请参见此处。
如果您想支持多个操作系统,请确保创建一个通用接口,以便您可以根据运行时可用的 JNI 进行与相应 JNI 连接的实现,并在没有可用的情况下允许回退。
附言。如果您希望在应用程序中弹出通知,Mac OS 和各种 Linux 版本都支持 Growl,这样可以节省您一些时间。