java - Java awt - 获取根窗口的标题
问题描述
我正在为 Burp Suite 编写一个插件,我想在我的插件中使用当前打开的项目名称。不幸的是,没有 API 调用,所以我的替代方法是取出窗口标题并正则表达式项目名称。窗口标题如下所示:
但是,我似乎无法使用代码获取此窗口的标题。我已经尝试了所有这些:
SwingUtilities.windowForComponent(tab);
SwingUtilities.getWindowAncestor(tab);
SwingUtilities.getAncestorOfClass(JFrame.class, tab);
SwingUtilities.getRoot(tab);
SwingUtilities.getRootPane(tab).getParent();
全部返回:( .tostring()
)
burp.a_5[frame0,0,23,1280x720,invalid,layout=java.awt.BorderLayout,
title=Burp Suite Professional v2.1.03 - Temporary Project -
licensed to OMITTED [OMITTED license],resizable,maximized,defaultCloseOperation=
DO_NOTHING_ON_CLOSE,rootPane=javax.swing.JRootPane[,0,22,1280x698,
invalid,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,
alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@1a0b90f7,
flags=16777673,maximumSize=,minimumSize=,preferredSize=],
rootPaneCheckingEnabled=true]
然而,似乎没有办法真正从这个对象中获取 title= 。函数.getName()
返回:frame0
。也许我错过了一些明显的东西。如何title=
摆脱这个 AWT Container 对象?
解决方案
尝试以下操作:
((JFrame) SwingUtilities.windowForComponent(tab)).getTitle();
可能您应该检查您的窗口是框架还是对话框
Window w = SwingUtilities.windowForComponent(tab);
String title = null;
if (w instanceof JFrame) {
title = ((JFrame) w).getTitle();
} else if (w instanceof JDialog) {
title = ((JDialog) w).getTitle();
}
推荐阅读
- azure - Azure Web 应用容器专用终结点部署不适用于专用终结点容器注册表
- java - 启用 Ruby 插件时将 Intellij IDEA 配置为默认为 Cucumber Java
- django-rest-framework - 使用版本控制时 drf-spectacular 不起作用(规范中未定义任何操作!)
- ansible - Ansible : Ansible SSH 登录后切换用户两次
- powerbi - 在度量中创建一个虚拟表。忽略表可视化中行的上下文
- java - Map#replaceAll - 如何更改键,而不仅仅是值?
- ios - 通过 Vision Framework 检测文本的特定位置
- c# - ASP.NET Core Mvc 中的邮件确认问题
- php - php中的cloundconvert api v2 return 任务字段是必需的
- amazon-web-services - 如何使用 Terraform 在 AWS Elasticsearch (opensearch) 上启用冷存储