Я создаю приложение каландра/планировщика с использованием JavaFX. Приложение состоит из одной GridPane с 35 (7x5) VBox. Внутри этих VBox есть TaskButtons (реализовано ниже). Когда я щелкаю правой кнопкой мыши TaskBox, текст становится серым, а когда я щелкаю левой кнопкой мыши TsskButton, я хочу, чтобы он удалил кнопку. Вещи, которые я уже знаю.
- AnchorPaneNode (расширяет VBox) не имеет статического метода getChildren().
- Я не могу создать отдельную переменную экземпляра для панели, так как не знаю, сколько их у меня будет.
- getParent().getChildren() не работает, потому что родительский метод getChildren() не виден.
- VBox имеет публичный getChildren(), но он не статичен.
- Я попытался сделать статический метод доступа к getChildren(), но не смог.
Что еще я могу попытаться удалить эту кнопку при щелчке правой кнопкой мыши? Спасибо за помощь!
public class TaskButton extends Button {
protected int buttonNum = AnchorPaneNode.listIndex;
public TaskButton(String str)
{
super(str);
setStyle("-fx-background-color: transparent;");
setOnMouseClicked(e -> {
if(e.getButton() == MouseButton.SECONDARY)
{
//I want to remove this button from the VBox, neither of these work
AnchorPaneNode.getChildren().remove(this);
//or
getParent().getChildren().remove(this);
}
else if(e.getButton() == MouseButton.PRIMARY)
{
setStyle("-fx-background-color: transparent; -fx-text-fill: #666666;");
}
});
}
}