0
我的應用程序的通常情況是這樣的:我有一個既擁有自定義對象又擁有創建ObservableList(和相應TableView)的方法的類,以便可以在其他類。這工作得很好:TableView內容在向類中添加方法時消失
但只要我添加了一個方法的那類,即是空,並甚至沒有使用,例如
public static void foo(){
}
..TableView變成這樣:
起初我還以爲它在某種程度上與意在只能容納對象類干擾,但後來我意識到其他的我添加,以前不相關的方法,並且它不影響行爲。那麼究竟發生了什麼?
這是爲MyObject類(注意的TableView方法):
public class Proizvod implements Serializable {
String name;
String jedinicamere;
Double cena;
static ObservableList<Proizvod> proizvods;
static TableView izmenaProizvodaTable;
public Proizvod() {
name = "";
cena = 0.0;
}
public Proizvod(String name, double cena, String jedinicamere) {
this.name = name;
this.cena = cena;
this.jedinicamere = jedinicamere;
}
public Double getCena() {
return cena;
}
public void setCena(Double cena) {
this.cena = cena;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getJedinicamere() {
return jedinicamere;
}
public void setJedinicamere(String jedinicamere) {
this.jedinicamere = jedinicamere;
}
public static TableView getTable() {
proizvods = InputOutput.loadProizvods("proizvods.sav");
izmenaProizvodaTable = new TableView(proizvods);
TableColumn<Proizvod, String> nameColumn = new TableColumn<>("Ime");
nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));
TableColumn<Proizvod, String> cenaColumn = new TableColumn<>("Cena");
cenaColumn.setCellValueFactory(new PropertyValueFactory<>("cena"));
TableColumn<Proizvod, String> jedinicaColumn = new TableColumn<>("Jedinica mere");
jedinicaColumn.setCellValueFactory(new PropertyValueFactory<>("jedinicamere"));
izmenaProizvodaTable.getColumns().addAll(nameColumn, cenaColumn, jedinicaColumn);
return izmenaProizvodaTable;
}
public static void newProizvod(Proizvod proizvod) {
proizvods = InputOutput.loadProizvods("proizvods.sav");
proizvods.add(proizvod);
izmenaProizvodaTable.setItems(proizvods);
InputOutput.saveProizvods(proizvods, "proizvods.sav");
}
public static void deleteProizvod(){
ObservableList<Proizvod> productSelected, allProducts;
allProducts = izmenaProizvodaTable.getItems();
productSelected = izmenaProizvodaTable.getSelectionModel().getSelectedItems();
productSelected.forEach(allProducts::remove);
InputOutput.saveProizvods(proizvods, "proizvods.sav");
}
}
而這正是實現:
public static void unosProizvoda() {
TableView tableView = Proizvod.getTable();
TextField kolicina = new TextField();
kolicina.setPromptText("Količina");
Button dodajProizvod = new Button("Dodaj proizvod");
dodajProizvod.setOnAction(event -> {
Proizvod izabranProizvod = (Proizvod) tableView.getSelectionModel().getSelectedItem();
Main.addToOdredjeniProizvods(new OdredjeniProizvod(Integer.valueOf(kolicina.getText()), izabranProizvod));
Main.enableFinalizeButton();
});
HBox hBox = new HBox(10, kolicina, dodajProizvod);
hBox.setPadding(new Insets(10,10,10,10));
VBox vBox = new VBox(tableView, hBox);
Stage stage = new Stage();
stage.setScene(new Scene(vBox, 300, 400));
stage.setTitle("Unos proizvoda");
stage.initModality(Modality.APPLICATION_MODAL);
stage.initStyle(StageStyle.UTILITY);
stage.showAndWait();
}
請編輯以包含顯示空表的MCVE。 –
@James_D我添加了代碼 –
您給我們的代碼不可執行。一個MCVE應該是可執行的。 –