【问题标题】:Remove card on button click JavaFX删除卡按钮单击 JavaFX
【发布时间】:2019-11-29 13:49:01
【问题描述】:

我正在制作一个看板,我在其中有一列,它在标题和下面的卡片列表之间使用网格窗格进行划分。我正在使用场景构建器构建它。

所以层次结构是

Anchor Pane(column) -> Gridpane(Seperate header and cards) -> Vbox(where I place my list of cards) -> AnchorPane(cards) -> Button(each card has a button)

当我按下卡片上的按钮时,我希望它移除我点击的卡片。

我做了以下事情

@FXML
public void delete() {
    Parent parent = button.getParent();
    col1.getChildren().remove(parent);  //col1 is the column
}

但是当我按下按钮时没有任何反应,卡没有被删除,我不知道为什么。如果有人可以帮助我,那就太好了。

【问题讨论】:

  • @kleopatra 我使用场景生成器制作 GUI(它在 fxml 文件中),我怎样才能用它制作最小的可重现代码?
  • 不明白你在问什么 - 你怎么能不明白?我无法想象 任何 上下文/工具链会阻碍您提供 minimal reproducible example .. 您阅读了参考的帮助页面,不是吗 ;)
  • Scene Builder 是用于 FXML 文件的 WYSIWYG editor。换句话说,它将内容保存到 FXML 文件中,然后您可以随意检查或修改该文件。为了提供minimal reproducible example,您必须提供最小的 FXML 文件、最小的控制器类以及启动应用程序所需的最少代码。请记住,最少的代码仍然必须完整(如帮助页面中所述)。

标签: java javafx fxml


【解决方案1】:

尝试如下更改代码:

@FXML
public void delete() {
    Parent card = button.getParent();
    ((VBox) card.getParent()).getChildren().remove(card);
}

【讨论】:

  • 谢谢你,成功了。请问我的代码不工作的原因是什么?
  • 不看你的代码很难知道。我不确定col1 指的是什么。如果是VBox,那么它应该和我写的一样。但既然你有问题,那一定是别的什么。
  • col1 指的是列,Vbox 是在放置卡片的列内。再次感谢您的帮助。
  • 对,所以卡片不是 Column 的子元素,而是 VBox 的子元素。所以你试图从列中删除它什么都不做。它只是被忽略了。
  • 这仅适用于单张卡,除非该卡有自己的 fxml...(只能将单个值存储在 button 字段中...)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-05
  • 1970-01-01
  • 1970-01-01
  • 2023-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多