当前位置: 首页 > 知识库问答 >
问题:

如何递归调用按钮点击按钮?

叶俊郎
2023-03-14

如何在无限次或动态地单击按钮时添加新的button?或者简单地说,如何执行添加更多按钮的功能?

我在Javafx中尝试过,但它只是在列表中添加了两个按钮。

@FXML
void addMoreButton(ActionEvent event) {

    b[count]=new Button("+");
    b[count].setOnMouseClicked(event2 -> { 
        count++;
        b[count]=new Button("+");
        list.setAll(b[count]);
        vboxTest.getChildren().addAll(list);
    });

    list.add(b[count]);
    vboxTest.getChildren().addAll(list);

}

但我必须动态添加,直到用户想要添加/按下上一个按钮

共有1个答案

齐承泽
2023-03-14

只有最后一个添加的按钮才能调用下一个按钮(即第二个按钮调用第三个按钮,第三个按钮调用第四个按钮,以此类推)...

假设您使用onaction事件处理程序的方法从一个按钮开始,您需要做两件事来正确更新场景:

  1. 使用相同的事件处理程序添加新按钮
  2. 从单击的按钮中删除事件处理程序

您可以通过访问事件的源来执行此操作:

@FXML
void addMoreButton(ActionEvent event) {
    Button source = (Button) event.getSource();
    source.setOnAction(null); // remove event handler

    Button newButton = new Button("+");
    newButton.setOnAction(this::addMoreButton);

    vboxTest.getChildren().add(newButton);
}

注意:我故意省略了列表/数组,因为数组限制元素的数量(ArrayIndexOutOfBoundsException),并且如果子列表中已经包含Null/A值,则会导致异常,除非您将数组大小设置为1,这样可以执行一次调用。当然,如果其他代码要求您这样做,您可以将这些button保存在列表中。

不确定移除事件处理程序是否是所需的结果。还可以执行不同的操作,例如在单击按钮后插入新按钮:

@FXML
void addMoreButton(ActionEvent event) {
    Node source = (Node) event.getSource();

    Button newButton = new Button("+");
    newButton.setOnAction(this::addMoreButton);

    vboxTest.getChildren().add(vboxTest.getChildren().indexOf(source) + 1, newButton);
}
 类似资料:
  • 我是使用Appium进行C#测试的新手。我能够设置一切并运行测试。我使用UiAutomatorViewer访问了一些按钮,现在我需要单击一个按钮,但我只是得到了cont-desc。哪一个FindElement(ByAndroiduiAutomator.“”)是否链接到Cont-Desc?我什么都试过了,但总是出错。我已经尝试使用TouchAction或Mouse.Click()单击此按钮;但没有任

  • 为了保持一致,我将列出它们: > 在活动中拥有类的成员,并将其分配给将在活动方法中处理逻辑的实例。 在'on Create'活动方法中创建'on ClickListener',并使用setOnClickListener将其分配给按钮 附言。我试着用谷歌搜索这个主题,但我找到的唯一的东西是描述“如何”做到这一点,而不是为什么它是好是坏。

  • 以上代码来自一个网站,但我无法点击此按钮,尽管尝试了多次。我将selenium与C#结合使用来进行自动化测试。这个按钮的作用是提交表单。

  • 问题内容: 我创建了一个名为functioncalling.php的页面,其中包含两个按钮 Submit 和 Insert 。作为PHP的初学者,我想测试单击按钮时执行的功能。我希望输出出现在同一页面上。因此,我创建了两个功能,每个按钮一个。functioncalling.php的源代码如下: 这里的问题是单击任何按钮后都没有输出。 我到底哪里出问题了? 问题答案: 是的,您在这里需要Ajax。请

  • 我就是不能点击按钮进入下一页。目前为止我尝试了以下方法 编辑 关键是重新定位元素,重新加载。由于我在表单中单击,底层代码发生了变化。司机。通过xpath(//button[@type='submit'][@name='button'])查找元素。因此,click()无法找到元素。重新加载驱动程序后。get(“%s/%s:%s”%(str(sys.argv[4])、str(sys.argv[2])、

  • 问题内容: 我的手势有点麻烦。 我正在尝试在同一个按钮上同时使用水龙头和长按,所以我已经使用了 和 但是当我点击时,我的按钮似乎对这两种功能都有反应。可能是什么问题? 问题答案: 很难说什么与您的代码不兼容,仅提供了两行,但是我建议您以这种方式进行: 为按钮创建插座 然后将手势添加到按钮中 然后创建动作来处理水龙头 Swift 3.0版本: Swift 5.x的更新语法: