JXTreeTable - 从外部应用程序操作复选框 - 可能吗?

时间:2012-07-16 20:15:06

标签: java swing qtp jxtreetable jtreetable

使用Java代码,我想操纵另一个外部Java swing应用程序,我无法访问有关它如何编码的任何信息。具体来说,我试图操纵JXTreeTable。其中一个类型为Boolean的列包含复选框。

我尝试做的一件事就是将代码执行双击 - 然后 - 空格键操作, 工作。但是,我的经理希望我找到一种方法来切换复选框而不使用空格键。

我想知道 - 有没有人知道使用Java方法切换复选框的方法,尽管我对原始应用程序的设计视而不见?我试图使用带有布尔参数的setCellData()。奇怪的是,在返回我修改它的值之后立即调用getCellData()到单元格上,但是复选框本身不会被切换 - 而且,在提交表单时,它是由发送的复选框反映的值,而不是布尔值细胞。

此外,布尔列中的复选框带有标签。我感觉这些标签是由TableRenderer生成的,但我如何获取标签上的值呢?

注意:我正在通过我正在编写的自动化测试脚本执行所有Java代码(确切地说是在QTP中)。所以,我可以使用很多方法(例如我无法编写自己的自定义Java类)

2 个答案:

答案 0 :(得分:0)

假设列数据由数据模型中的布尔值支持,请更改数据模型中的值。

只需使用您触发所需的表更改事件,以便UI可以更新。

答案 1 :(得分:0)

这就是我最终解决问题的方法:

但是,我的特殊情况最终变得更加复杂,正如我现在所知道的那样。事实证明,直接修改模型没有任何效果 - 我必须通过树中的实际节点对象进行所有表格更改。通过盲目跟踪方法,我发现开发人员编写了自定义节点处理程序,其方法是更改​​复选框状态模型中的数据。为了更新表格显示,我使用了treeTable.updateUI()。