如何检测JeditorPane中呈现的网页的Html元素

时间:2010-12-24 07:37:14

标签: java actionlistener

我正在设计一个带有Java集成webbrowser的Web应用程序测试工具来实现我使用JeditorPane的HTMLEditorKit的浏览器,它提供了最低限度的功能,对我来说没什么用。

现在我想检测所有html元素,例如按钮,列表,dropdownList,textfields等,并在用户与它们交互时记录这些元素的行为。(例如,网页文本框中的用户类型)

我尝试在JeditorPane上使用actionListeners来检测添加组件而没有正面结果的事件。所有的JeditorPane的eventsListeners都不能用于显示在其中的文本框(网页表单)等html元素。

有什么方法可以检测并听取JeditorPane中呈现的html元素(尤其是Web表单)的动作,当我提供url时动态加载它。

1 个答案:

答案 0 :(得分:0)

要渲染这些元素(让我们将它们命名为控件),EditorKit使用ComponentView和扩展。在paint()上,ComponentView创建了一个容器 - 内部类Invalidator。 Invalidator实际上包含来自Element属性的控件。

因此,在完成paint()之后,您可以获得JEditorPane的子项列表。我认为该列表仅包含Invalidators。并询问每个Invalidator有关内部组件的信息。因此,您将拥有在JEditorPane中创建的实际控件列表。

然后,您可以根据组件类型添加任何侦听器以注册任何活动。 在每个文档更改事件(插入/删除/更新)上,您应该在下一个paint()之后重新检查列表中的更改并相应地更新您的数据。