如何访问JavaFX VBox中的匿名/动态标签?

时间:2017-10-31 15:59:42

标签: javafx label

我遇到了JavaFX的问题。

我尝试做的很简单: 1.用户使用给定名称和surename填写两个TextField。 2.通过按下按钮“添加人物”,类别“人物”的对象将被添加到包含该人姓名的arraylist中。同时会有一个VBox-Object,它会添加一个anonymus label-Object和该人的名字。

问题: 现在我想点击VBox中的anonymus标签并收回Person-Object。

以下是添加Person

的方法
      btnAddContact.setOnAction(e -> {
        if (!"".equals(tfVorname.getText().toString())
                && !"".equals(tfNachname.getText().toString())) {
            contactList.addContact(new Contact(tfVorname, tfNachname));
            spContacts.setContent(refreshContactList());
            primaryStage.setScene(scene);
            primaryStage.show();
        }
    });

refreshContactList方法将新的anonymus Label添加到ContactList(ArrayList)中,并在标签中显示名称:

    private VBox refreshContactList() {

    if (contactList.getContactList().size()>0) {
        vbContacts.getChildren().add(new Label(contactList.getContactList().get(contactList.getContactList().size()-1).getVorname() + " " + contactList.getContactList().get(contactList.getContactList().size()-1).getNachname()));            
    }


    return vbContacts;
}

我尝试编写了一个vbContacts.setOnMouseClicked ...但我能收到的唯一对象是VBox。

有关如何进入实验室的任何想法吗?

由于

卡尔

1 个答案:

答案 0 :(得分:1)

只需在创建标签时将标签添加到标签:

private VBox refreshContactList() {

    if (contactList.getContactList().size()>0) {
        Contact lastContact = contactList.getContactList().get(contactList.getContactList().size()-1);
        Label label = new Label(lastContact.getVorname() + " " + lastContact.getNachname()) ;
        label.setOnMouseClicked(e -> {
            // do whatever you need with lastContact and/or label...
        });
        vbContacts.getChildren().add(label);            
    }


    return vbContacts;
}