現時点ではデータベースベースのチャットシステムです。 すべてのユーザーの友人リストは、ログイン後にTreeViewで読み込みを取得します。
手段: ログイン後、次のFunktionによってuseresの友人の名前を要求します。
String namesSt[] = get.getUserFriendNameByUserID(currentUserID);
指定された名前を使用してそれらをTreeItemとしてFriendlist / TreeRootItem "rootItem"にロードするには
for (int counter = 0; counter < namesSt.length; counter++) {
System.out.println(namesSt[counter]);
TreeItem<String> item = new TreeItem<String> (namesSt[counter]);
item.addEventHandler(MouseEvent.MOUSE_CLICKED,handler);
rootItem.getChildren().add(item);
}
私は今私のrootItemを追加すると、私はTreeViewの名前を参照してください。 しかし、名前をクリックすると、指定されたMouseEventHandlerが呼び出されません。
さらに、MouseEventをトリガーするElementのテキストを要求したいので、これらの名前をspezial funktionに送信することができます。
どのように私はそのようなMouseEventをrealiceできますか? 動的に作成されたTreeItemからどのように呼び出すことが可能ですか?
助けていただきありがとうございます:)
歓声 トビ
回答:
回答№1の場合は3TreeItem
sはデータを表し、UIコンポーネントは表しません。彼らはマウスイベントを生成しません。あなたはマウスリスナーを TreeCell
。これを行うには、セルファクトリを TreeView
。セルファクトリは、 TreeCell
彼らが必要とされているように。したがって、これは動的に追加されたツリー項目に対しても機能します。
次のようなものが必要になります:
TreeView<String> treeView ;
// ...
treeView.setCellFactory( tv -> {
TreeCell<String> cell = new TreeCell<>();
cell.textProperty().bind(cell.itemProperty());
cell.addEventHandler(MouseEvent.MOUSE_CLICKED, event -> {
if (! cell.isEmpty()) {
String value = cell.getItem();
TreeItem<String> treeItem = cell.getTreeItem(); // if needed
// process ...
}
});
return cell ;
}