代码之家  ›  专栏  ›  技术社区  ›  mike rodent

让TestFX robot在TreeTableView中的特定TreeItem上按键

  •  0
  • mike rodent  · 技术社区  · 4 年前

    我想模拟一个用户在TreeTableView的TreeItem上按F2。如果为列设置了默认编辑器,则应该启动编辑器。

        given:
        def cllr = App.instance.fxmlController
        def iterator = new TreeIterator(cllr.treeTableView.root)
        // NB TreeIterator is a simple depth-first stack-based iterator
        int nTreeItems = 0
        TreeItem treeItemToModify = null
        while (iterator.hasNext()) {
            nTreeItems++
            TreeItem ti = iterator.next()
            // choose tree item "at random"...
            if( nTreeItems == 10 ){
                treeItemToModify = ti
            }
        }
        assert treeItemToModify != null
        // make sure showing
        for( TreeItem ti = treeItemToModify; ti.parent != null; ti = ti.parent ){
            ti.parent.setExpanded( true )
        }
        // set selection on the tree item
        int row = cllr.treeTableView.getRow( treeItemToModify )
        cllr.treeTableView.selectionModel.select( row, cllr.treeTableView.columns.get( 0 ) )
        // set focus on this tree item
        cllr.treeTableView.focusModel.focus( row, cllr.treeTableView.columns.get( 0 ) )
    
        when:
        clickOn( cllr.treeTableView  )
        type( KeyCode.F2 )
        sleep( 3000 )
    
        then:
    

    ... 当它运行时,我看到光标根本不移动。。。它位于控件的中间,而不是列0(树列)上。我看到所选内容变为另一个项目,而不是所选的、聚焦的项目,然后 type( KeyCode.F2 ) 目前什么也没做。

    我试过各种排列 cllr.treeTableView.requestFocus()

    我不知道的主要问题是如何使机器人的光标移动到 TreeItem 我已经选择并专注于。

    clickOn 被注释掉,将F2应用到所选的右侧 特雷特姆

    0 回复  |  直到 4 年前