姚家园做网站,开发工具包,企业官网维护,河北省建筑培训网目录
1. 创建一个可观察的列表#xff0c;用于存储ListView中的数据,这里的User是包装了用户的相关信息。
2.通过本人id获取friendid#xff0c;及好友的id#xff0c;然后用集合接送#xff0c;更方便直观一点。
3.用for遍历集合#xff0c;逐个添加。
4.渲染器…目录
1. 创建一个可观察的列表用于存储ListView中的数据,这里的User是包装了用户的相关信息。
2.通过本人id获取friendid及好友的id然后用集合接送更方便直观一点。
3.用for遍历集合逐个添加。
4.渲染器ImageCellFctoryFriendList定制
5.渲染器具体方法如下 1. 创建一个可观察的列表用于存储ListView中的数据,这里的User是包装了用户的相关信息。 // 创建一个可观察的列表用于存储ListView中的数据ObservableListUser friendList FXCollections.observableArrayList();
记得把javafx的你需要使用的ListView命名 2.通过本人id获取friendid及好友的id然后用集合接送更方便直观一点。
ListUser ren (ListUser) Connection.ois.readObject();//我的id好友id及添加时间 3.用for遍历集合逐个添加。
for (User user : ren) {
sitItems展示我添加的好友信息项目中我只展示了好友的头像昵称及在线状态
this.friendListview.setItems(this.friendList);this.friendList.add(person);
最后通过setCellFctory渲染器展示控件的每个单元格并且它可以允许你为每个单元格提供一个定制的渲染器这里我定制的渲染器为ImageCellFctoryFriendList方法名自定义为自定义函数格式需要一样但是内容可以自定义。 this.friendListview.setCellFactory(new ImageCellFactoryFriendList()); 4.渲染器ImageCellFctoryFriendList定制
具体代码在本文章的最后
这里先获取需要的用户信息然后进行展示两个50分别为展示头像的长和宽。 //更新单元格内容String username listviewmember.name;//获取用户名String imagePath listviewmember.image;//获取用户头像int online listviewmember.online; // 获取用户在线状态//显示头像File imageFile new File(imagePath);Image images new Image(imageFile.toURI().toString());this.imageView.setFitWidth(50.0);this.imageView.setFitHeight(50.0);this.imageView.setImage(images);this.setGraphic(this.imageView);// 设置用户名setText(username);// 设置在线状态的颜色if (online1) {setTextFill(Color.GREEN); // 在线状态为绿色setText(username (在线));} else {setTextFill(Color.RED); // 不在线状态为红色setText(username (离线));}this.setPrefHeight(-1.0);
设置右击菜单这里右会出现两个按钮
option1.setOnAction((event) - {是设置点击按钮1执行查看资料功能内容可以直接设置。
注意有几个按钮就需要添加几个进MenuItem。 //设置右键菜单ContextMenu contextMenu new ContextMenu();MenuItem option1 new MenuItem(查看资料);MenuItem option2 new MenuItem(删除好友);contextMenu.getItems().addAll(new MenuItem[]{option1,option2});this.setContextMenu(contextMenu);//查看资料option1.setOnAction((event) - {
最后显示之前设置的MenuItem。
//设置鼠标点击事件,当右键点击时显示上述创建的ContextMenuthis.setOnMouseClicked((event) - {if (event.getButton() MouseButton.SECONDARY) {contextMenu.show(this, event.getScreenX(), event.getScreenY());}});
具体效果如下 5.渲染器具体方法如下
其中User为用户信息MarkTool类是为了方便客户端服务端传递信息的。 public class ImageCellFactoryFriendList implements CallbackListViewUser, ListCellUser {public ImageCellFactoryFriendList() {}public ListCellUser call(ListViewUser param) {return new ListCellUser() {private ImageView imageView new ImageView();protected void updateItem(User listviewmember, boolean empty) {super.updateItem(listviewmember, empty);if (!empty listviewmember ! null) {//更新单元格内容String username listviewmember.name;//获取用户名String imagePath listviewmember.image;//获取用户头像int online listviewmember.online; // 获取用户在线状态//显示头像File imageFile new File(imagePath);Image images new Image(imageFile.toURI().toString());this.imageView.setFitWidth(50.0);this.imageView.setFitHeight(50.0);this.imageView.setImage(images);this.setGraphic(this.imageView);// 设置用户名setText(username);// 设置在线状态的颜色if (online1) {setTextFill(Color.GREEN); // 在线状态为绿色setText(username (在线));} else {setTextFill(Color.RED); // 不在线状态为红色setText(username (离线));}this.setPrefHeight(-1.0);//设置右键菜单ContextMenu contextMenu new ContextMenu();MenuItem option1 new MenuItem(查看资料);MenuItem option2 new MenuItem(删除好友);contextMenu.getItems().addAll(new MenuItem[]{option1,option2});this.setContextMenu(contextMenu);//查看资料option1.setOnAction((event) - {System.out.println(查看资料按钮!!);LookPersonalData.id listviewmember.id;LookPersonalData.userlistviewmember;FriendPersonalData.user listviewmember;//???URL url this.getClass().getResource(LookPersonalData.fxml);if (url null) {System.err.println(无法找到LookPersonalData.fxml资源文件);} else {Parent root null;try {root (Parent)FXMLLoader.load(url);} catch (IOException var7) {IOException e var7;e.printStackTrace();return;}Stage stage new Stage();stage.setTitle(个人界面);stage.initStyle(StageStyle.UTILITY);Scene scene new Scene(root, 800.0, 640.0);stage.setScene(scene);stage.show();}});//删除好友option2.setOnAction((event) - {System.out.println(删除好友按钮!!);try {String id listviewmember.id;String friendid listviewmember.friendid;User u new User(id, friendid);String Operation MarkTool.DeleteFriend;Connection.oos.writeObject(Operation);Connection.oos.writeObject(u);String response Connection.ois.readObject().toString();System.out.println(response 删除成功与否结果已收到);//103 yesif (response.equals(MarkTool.DeleteFriendfail)) {Alert alertxx new Alert(Alert.AlertType.INFORMATION);alertxx.setTitle(错误);alertxx.setHeaderText((String)null);alertxx.setContentText(删除失败看样子他不想失去你呢);alertxx.showAndWait();}else {Alert alertx new Alert(Alert.AlertType.INFORMATION);alertx.setTitle(正确);alertx.setHeaderText((String) null);alertx.setContentText(删除成功减少一位损友);alertx.showAndWait();}} catch (IOException var15) {IOException exx var15;throw new RuntimeException(exx);} catch (ClassNotFoundException var16) {ClassNotFoundException ex var16;throw new RuntimeException(ex);}});//设置鼠标点击事件,当右键点击时显示上述创建的ContextMenuthis.setOnMouseClicked((event) - {if (event.getButton() MouseButton.SECONDARY) {contextMenu.show(this, event.getScreenX(), event.getScreenY());}});} else {this.setText((String)null);this.setGraphic((Node)null);this.setPrefHeight(0.0);}}};}
}