gpt4 book ai didi

java - 如何向地址簿程序添加删除和编辑功能?

转载 作者:行者123 更新时间:2023-12-02 04:39:09 25 4
gpt4 key购买 nike

所以我正在通过这个例子练习TableView: http://docs.oracle.com/javase/8/javafx/fxml-tutorial/fxml_tutorial_intermediate.htm

我了解其中的所有内容,但我想进一步扩展它并包括删除和编辑功能。有人可以帮助我吗?我已经尝试了一段时间,但似乎没有任何效果。

这是我的添加函数(有效):

@FXML
protected void addMusic(ActionEvent actionEvent) {
ObservableList<Music> data = tableView.getItems();
data.add(new Music(albumField.getText(),
songField.getText(),
genreField.getText()
));

albumField.setText("");
songField.setText("");
genreField.setText("");
}

我的删除功能不起作用:

      @FXML
protected void deleteMusic(ActionEvent actionEvent) {
ObservableList<Music> data = tableView.getItems();
data.remove(new Music(albumField.deleteText(),
songField.deleteText(),
genreField.deleteText()
));

}


}

谢谢

更改了删除音乐:

 @Override
protected void deleteMusic(ActionEvent actionEvent) {
ObservableList<Music> data = tableView.getItems();
data.remove(equals(Music(albumField.deleteText(), songField.deleteText(), genreField.deleteText());

albumField.setText("");
songField.setText("");
genreField.setText("");

}

音乐课:

package sample;

import javafx.beans.property.SimpleStringProperty;



public class Music {
private final SimpleStringProperty album = new SimpleStringProperty("");
private final SimpleStringProperty song = new SimpleStringProperty("");
private final SimpleStringProperty genre = new SimpleStringProperty("");

public Music() {
this("", "", "");
}

public Music(String album, String song, String genre) { //Constructor utilised
setAlbum(album);
setSong(song);
setGenre(genre);
}


public String getAlbum() {
return album.get();
}

public void setAlbum(String sAlbum) {
album.set(sAlbum);
}

public String getSong() {
return song.get();
}

public void setSong(String sAlbum) {
song.set(sAlbum);
}

public String getGenre() {
return genre.get();
}

public void setGenre(String sAlbum) {
genre.set(sAlbum);
}


}

/image/2SoWs.png

最佳答案

大多数 java Collection 使用 equals 方法来检查两个对象是否相同。如果集合的元素不重写 equals,则不会将两个不同的对象视为相等,即使它们的字段中包含相同的值。

您可以像这样重写equals:

...
import java.util.Objects;

public class Music {
...

@Override
public boolean equals(Object obj) {
// make sure equals is symetric
if (obj == null || getClass() != obj.getClass()) {
return false;
}
final Music other = (Music) obj;
// compare strings for equality
return Objects.equals(this.getAlbum(), other.getAlbum())
&& Objects.equals(this.getSong(), other.getSong())
&& Objects.equals(this.getGenre(), other.getGenre());
}

}

然后你可以使用

data.remove(new Music(albumField.getText(), songField.getText(), genreField.getText()));

从列表中删除音乐对象。

关于java - 如何向地址簿程序添加删除和编辑功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30384516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com