J'ai créé un tableau de HBox, boutons et étiquettes. Chaque fois qu'un bouton « Ajouter » est pressé, je mets:Comment supprimer un noeud d'un volet de flux dans JavaFX?
hbox[count] = new HBox();
buttons[count] = new Button();
labels[count] = new Label();
(où le nombre commence à 0 et se termine à 5) Je puis ajouter le bouton et l'étiquette à l'HBox (de sorte que chaque HBox contient un bouton et une étiquette) et enfin ajouter les 5 HBoxes à un volet de flux. Comment puis-je supprimer un HBox du volet de flux en cliquant sur le bouton à l'intérieur du HBox?Ceci est une image de chacun des HBox dans le volet de flux.
/**
* FXML Controller class
*
* @author HeshamSaleh
*/
public class SecondaryViewController implements Initializable {
@FXML
private TextField searchBar;
@FXML
private Button addBtn;
@FXML
private FlowPane flowPane;
ArrayList<String> addedArtists = new ArrayList<String>();
String[] artists = {"Craig David", "Coldplay", "Eminem", "D12", "Shakira", "Radiohead", "Linkin Park", "Maroon 5", "Celine Dion", "50 Cent", "Tupac", "Snoop Dogg", "Metallica", "Backstreet Boys"};
List<String> artistNames = new ArrayList<String>(Arrays.asList(artists));
int count = 4;
HBox[] hboxArr = new HBox[5];
Button[] buttonArr = new Button[5];
Label[] labelArr = new Label[5];
int hboxCount = 0;
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
searchBar.setFocusTraversable (false);
TextFields.bindAutoCompletion(searchBar, artistNames);
}
@FXML
private void addBtnPressed(MouseEvent event) {
String artistName = searchBar.getText();
searchBar.setText("");
if(artistNames.contains(artistName) && !addedArtists.contains(artistName) && count != -1) {
hboxArr[hboxCount] = new HBox();
buttonArr[hboxCount] = new Button();
labelArr[hboxCount] = new Label();
hboxArr[hboxCount].setAlignment(Pos.CENTER);
hboxArr[hboxCount].setSpacing(-1);
buttonArr[hboxCount].setText("X");
buttonArr[hboxCount].setAlignment(Pos.CENTER);
buttonArr[hboxCount].setStyle("-fx-background-color: TRANSPARENT; -fx-border-color: #000000;");
buttonArr[hboxCount].setFont(Font.font("Open Sans", FontWeight.BOLD, 12));
buttonArr[hboxCount].setMinWidth(20);
buttonArr[hboxCount].setMinHeight(20);
labelArr[hboxCount].setText(artistName.toUpperCase());
labelArr[hboxCount].setFont(Font.font("Proxima Nova Rg", 12));
labelArr[hboxCount].setAlignment(Pos.CENTER);
labelArr[hboxCount].setStyle("-fx-background-color: TRANSPARENT; -fx-border-color: #000000;");
labelArr[hboxCount].setMinWidth(90);
labelArr[hboxCount].setMinHeight(27);
hboxArr[hboxCount].getChildren().addAll(buttonArr[hboxCount], labelArr[hboxCount]);
flowPane.setAlignment(Pos.CENTER);
flowPane.getChildren().add(hboxArr[hboxCount]);
addedArtists.add(artistName);
count--;
hboxCount++;
}
}
}
Comment sauriez-vous quel hb vous supprimez? J'ai besoin de supprimer un hb spécifique lorsque son bouton est pressé –
@HeshamSaleh Akhi il supprime le HBox (ie parent) du bouton pressé .. s'il vous plaît copier-coller le code dans votre IDE et vérifier :) – Yahya
Ok, votre code fait exactement Ce dont j'ai besoin. Pouvez-vous s'il vous plaît m'aider à l'implémenter dans mon code ci-dessus? Merci beaucoup Yahya! –