gpt4 book ai didi

java - 在没有winapi的情况下将项目添加到windows系统菜单

转载 作者:可可西里 更新时间:2023-11-01 11:58:33 24 4
gpt4 key购买 nike

我正在寻找是否可以在当前 JFrame 的 Winwdows 系统菜单中添加一个项目(“关于”应用程序)。

正如 that answer 中所建议的那样,我知道可以通过 JNI/JNA 和 Windows API 使用 GetSystemMenu() 调整菜单,但我正在寻找是否可以在普通的 Java/Swing 中实现。

我在 that forum thread 中发现了一些告诉它应该可行的东西:

this prior to creating a JFrame

JFrame.setDefaultLookAndFeelDecorated(true);

then, before adding anything to the frame, iterate the frame's components, looking for the JMenu. When found, add your 'about' menuItem

just tested, works fine.

唉,没有提供完整的 sscce,我也没有设法让它在我的代码中工作。在添加组件之前创建 Windows 之后立即设置断点时,我看不到 JMenu。既不在第一层 (JRootPane) 也不在后续嵌入的组件 (JPanel, JLayeredPane)。

如果重要的话,我在 WinXP 和 Win7 上处理 Java 6/7,窗口创建为 new JFrame("some title") 并且我使用的是原生外观UIManager.getSystemLookAndFeelClassName()

最佳答案

使用跨平台外观时确实存在 JMenu 组件。组件的层次结构是:

class Test
class javax.swing.JRootPane
class javax.swing.JPanel
class javax.swing.JLayeredPane
class javax.swing.JPanel
class javax.swing.plaf.metal.MetalTitlePane
class javax.swing.plaf.metal.MetalTitlePane$SystemMenuBar
class javax.swing.JMenu
class javax.swing.JButton
class javax.swing.JButton
class javax.swing.JButton

不幸的是,当使用 Windows 外观时,Java 根本不知道标题栏。您可能无法使用 JNA 或其他 laf。

关于java - 在没有winapi的情况下将项目添加到windows系统菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12815659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com