2017-10-31 1 views
0

JavaFX에 문제가 있습니다.JavaFX VBox에서 익명/동적 레이블에 액세스하는 방법은 무엇입니까?

내가하려고하는 것은 매우 간단하다. 1. 사용자는 주어진 이름과 surename으로 두 개의 TextField를 채운다. 2. "add person"버튼을 클릭하면 "Person"클래스의 객체가 해당 인물의 이름이 포함 된 arraylist에 추가됩니다. 동시에 사람의 이름과 함께 anonymus label-Object를 추가하는 VBox-Object가있을 것입니다.

문제 : 이제 VBox에서 anonymus 레이블을 클릭하고 Person-Object를 다시 받으려합니다.

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; 
} 

: 여기

사람

 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 메소드가 ContactList (ArrayList에)에 새로운 anonymus 라벨을 추가하고 라벨의 이름이 표시를 추가하는 방법 나는 vbContacts.setOnMouseClicked를 프로그래밍하려고 시도했지만,받을 수있는 유일한 객체는 VBox였습니다.

실험실에 액세스하는 방법에 대한 아이디어가 있으십니까?

감사

+0

그냥 댓글 : ['ListView'] (HTTPS에 대해 배울 수도 있습니다 : //docs.oracle.com/javase/8/javafx/user-interface-tutorial/list-view.htm#CEGGEDBF). –

답변

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; 
} 
관련 문제