Я создаю приложение, и я создаю модель для ObservableList
Я хочу вызвать коллекцию .contains()
метод, который является requre equals()
, но это всегда возвращает с ложным. Я только поместил одно поле в метод equals. Когда я сравниваю, если выражение использует метод getter, он возвращает true, как я ожидаю.Модель JavaFx всегда возвращает false
import java.util.Objects;
import javafx.beans.InvalidationListener;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.image.Image;
public class Client implements ObservableValue {
private final SimpleStringProperty remoteAddress;
private final SimpleStringProperty userName;
private final boolean connected = true;
private final ObservableList<String> logs
= FXCollections.observableArrayList();
private final ObservableList<Image> imageLogs
= FXCollections.observableArrayList();
public Client(String remoteAddress, String userName) {
this.remoteAddress = new SimpleStringProperty(remoteAddress);
this.userName = new SimpleStringProperty(userName);
}
public SimpleStringProperty remoteAddressProperty() {
return remoteAddress;
}
public SimpleStringProperty userNameProperty() {
return userName;
}
public final String getRemoteAddress() {
return remoteAddress.get();
}
public final void setRemoteAddress(String name) {
this.remoteAddress.set(name);
}
public final String getUserName() {
return userName.get();
}
public final void setUserName(String name) {
this.userName.set(name);
}
public ObservableList<String> getLogs() {
return logs;
}
public ObservableList<Image> getImageLogs() {
return imageLogs;
}
@Override
public boolean equals(Object obj) {
if (obj == null || getClass() != obj.getClass()) {
return false;
}
return this.remoteAddress == ((Client) obj).remoteAddress;
}
@Override
public int hashCode() {
int hash = 3;
hash = 37 * hash + Objects.hashCode(this.remoteAddress);
return hash;
}
}
Но почему я могу удалить данные из 'TableView'? Я недавно удалил данные из tableview (которые содержат объекты класса Person), вызывая 'table.getItems(). Remove (row.getItem())' даже я не переопределял методы equals и hashCode. – UnKnown
@UnKnown Я действительно не вижу, как это связано с этим вопросом. Возможно, вам нужно опубликовать свой собственный вопрос, указав правильный контекст для вашего кода. –
Я разместил здесь новый вопрос. http://stackoverflow.com/questions/40427758/how-tableview-and-listviews-remove-works – UnKnown