我正在使用javaFX构建服务器和客户端聊天应用。对于聊天界面,我想构建一个如下所示的聊天窗口:
双方的第一次尝试(我和聊天的朋友)进行得非常顺利,如上图所示。然而,当他们继续聊天时,事情变得非常奇怪:
以下是我的代码:
chatListView.setCellFactory(lv -> {
ListCell<String> cell = new ListCell<>();
Label label = new Label();
cell.itemProperty().addListener((observable, oldValue, newValue) -> {
if (newValue != null) {
System.out.println(oldValue+ " " + newValue);
String name = newValue.split(":")[0].toLowerCase();
if (name.equals(pmUser)) {
label.setStyle("-fx-background-color: aliceblue;");
cell.setAlignment(Pos.CENTER_RIGHT);
}
label.setText(newValue);
cell.setGraphic(label);
}
});
cell.emptyProperty().addListener((obs, wasEmpty, isEmpty) -> {
if (isEmpty) {
cell.setGraphic(null);
}
});
cell.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
return cell;
});
正如您所看到的,只要邮件属于朋友name.equals(pmUser)
,就会更改css。但情况似乎很奇怪,它只是双方的第一次尝试。在那之后,一切都失控了。
之前我使用过updateItem(String item, boolean emtpy)
函数,但它也遇到了同样的问题。
感谢有人可以帮助我。