JavaFX: Vinculando TextArea ao elemento do TreeItem selecionado (contido no TreeView)

Estou criando o seguinte JavAFX e sou bastante novo nele. Aqui está o que parece:

http://i.imgur.com/nfzQzIY.png

Como você pode ver, há umaTreeView à esquerda, bem como algunsTextAreas no centro. Por favor, ignore o resto.

As seqüências alfanuméricas à esquerdaTreeView estãoPlugTreeItem objetos de classe, que eu criei para estender o TreeItem e ter um suporte adicional para umPlug item, assim:

public class PlugTreeItem<T> extends TreeItem{

    private Plug plugItem = null;

    //########################### PROCS ########################################

    public PlugTreeItem(Object t, Plug pl) {
        super(t);
        plugItem = pl;
    }

    public PlugTreeItem(Object t, Node node, Plug pl) {
        super(t, node);
        plugItem = pl;
    }

    public void setPlugItem(Plug plugItem) {
        this.plugItem = plugItem;
    }

    public Plug getPlugItem() {
        return plugItem;
    }
}

E aTreeView é construído lendoPlugs fora de um banco de dados SQL, criandoPlugTreeItem objetos, vinculando o plugue aoPlugTreeItem adicionando-o ao nó raiz da árvore (que foi criado inicialmente como um manequim), do qual fazemos oTreeView: NOTA: result_set contém a matriz de resultados SQL. MAC é o campo que contém os endereços que você vê à esquerda da captura de tela.

treeItemRoot = new PlugTreeItem<>("Active Plugs", new Plug());          //Root of the tree, contains a dummy Plug object.
selectedTreeItem = treeItemRoot;  //Holder of our currently selected TreeItem, see Listener below.

TreeView<String> treeView = new TreeView<>(treeItemRoot);

while(result_set.next()){
    Plug pl = null;                                         
    pl = new Plug(result_set.getString("SIHUid"), result_set.getString("sensorID"), result_set.getString("Location"), result_set.getString("Appliance"), result_set.getString("Type"), result_set.getString("connection"));
    PlugTreeItem<String> pti = new PlugTreeItem(pl.getMAC(),pl);
    treeItemRoot.getChildren().add(pti);
}

Finalmente, eu tenho alguns TextAreas, como você vê na captura de tela do aplicativo. Eu quero que eles reflitam os elementos do selecionadoPlugTreeItem noTreeView, vamos começar com o Plug MAC TextArea que quero refletir o mesmo valor que você vê à esquerda.

Adicionei o seguinte ouvinte aselectedTreeItem para que toda vez que o usuário clique em umTreeItem, aselectedTreeItem é atualizado e mantém uma referência a esse específicoPlugTreeItem:

treeView.getSelectionModel().selectedItemProperty().addListener( new ChangeListener() {     
            @Override
            public void changed(ObservableValue observable, Object oldValue, Object newValue) { 
                selectedTreeItem = (PlugTreeItem<String>) newValue;
                System.out.println("Selection plug MAC: " + selectedTreeItem.getPlugItem().getMAC());           //MARKER: REMOVE
                // do what ever you want 
            }
        });

Espero que isso faça o que eu acho que é. oSystem.out O comando confirma que sempre que eu clico em itens diferentes da árvore, o endereço MAC em que clico é impresso.

Como posso dizer aos meus TextAreas para "ei, ouça o itemTreeItem. Sempre que ele muda, obtenha um valor específico e defina-o como seu texto"?

Tentei adicionar um segundo ouvinte em um campo específico dePlug que eu mudei de String paraStringProperty para que se torne umObservableValue. No entanto, mesmo depois de vincular o textProperty do TextArea ao StringProperty, ele não altera seu conteúdo.

Sei que posso ter formulado minha pergunta incorretamente devido ao seu tamanho. Por favor, não hesite em me pedir qualquer informação ou código adicional que eu possa ter omitido ou que você considere importante.

questionAnswers(1)

yourAnswerToTheQuestion