3

我试图允许用户在不向窗口本身添加组件的情况下更改 Java 中的窗口标题。我实际上正在尝试使用 a JInternalFrame,但认为解决方案应该与 a 类似JFrame。我只是想在右键单击窗口标题栏时弹出的上下文菜单中添加一个附加菜单项。例如,下面的Set 标题

在此处输入图像描述

这个例子是在 Windows XP 上的,但也许有一种方法可以独立地获取窗口上下文菜单操作系统,可能类似于(但对于应用程序SystemTray.getSystemTray()的单个窗口)。由此,我将能够提供自己的弹出对话框供用户输入新标题。ActionListener

这是比我想象的要大得多的任务吗?有没有人有他们以前使用过的解决方案?

4

2 回答 2

2

简短的回答:我认为这并不容易。我不是 100% 确定这是否可能。

首先,JFrame 和 JInternalFrame 实际上是完全不同的。JFrame 是一个顶级组件,其标题栏等通常由操作系统提供。JInternalFrame 的全部内容(包括标题栏)由 Swing LAF 提供。

对于 JInternalFrame,上下文菜单由 LAF 提供,而不是 JInternalFrame 本身。您必须对 UIComponent 做一些事情才能更改上下文菜单。我认为您可能必须提供一个自定义 UI 组件才能做到这一点,这很丑陋,通常会跨越不同的 LAF 或工作,但充其量看起来很糟糕。请参阅BasicInternalFrameTitlePanecreateSystemMenu方法。

于 2011-06-20T16:58:33.450 回答
1

如果不深入研究 Swing 的内部 UI 系统,我认为这是不可能的,我什至不会考虑这样做。你为什么不使用内置JMenuBarJInternalFrame

myInternalFrame.setJMenuBar(myMenuBar);
于 2011-06-20T16:49:59.767 回答