我遇到了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。
有关如何进入实验室的任何想法吗?
由于
卡尔
答案 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;
}