【发布时间】:2015-05-21 21:18:32
【问题描述】:
所以我正在通过这个例子练习 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);
}
}
【问题讨论】:
-
Music是否覆盖equals? -
您正在创建一个新的 Music 对象,而不是抓取现有的对象,因此如果您没有重写 equals() 来检查数据相等性而不是对象引用相等性,它永远不会找到您尝试删除的对象。
-
@azurefrog 很抱歉,我没明白,你能给我看看吗?
-
data.remove(覆盖等于(Music(albumField.deleteText(), songField.deleteText(),genreField.deleteText())));
-
评论里的代码真的没法看。如果您想在问题中添加一些内容,请编辑原始问题并在此处添加代码。