ciao!
provo a spiegarmi.
ho un controller con layout in javafx, che vorrei che fungesse sia per l'aggiunta di un dato (Book) che per la modifica.
quindi, se clicco su una riga della TableView, mi apre il form con i campi valorizzati.
e poi, al click del bottone, faccio l'update.
se invece ci arrivo da menu, il form è vuoto (ovviamente) e devo fare l'aggiunta.
questo il controller al momento, che sulla carta dovrebbe anche funzionare:
codice:
public class ControllerBook {
private Book book;
private ReadJson jsonRead;
@FXML
private GridPane bookPane;
@FXML
private TextField txtTitle;
@FXML
private ComboBox<Author> comboAuthor;
@FXML
private TextField txtAuthor;
@FXML
private ComboBox<Editor> comboEditor;
@FXML
private TextField txtEditor;
@FXML
private TextField txtPrice;
@FXML
private TextField txtIsbn;
@FXML
private TextArea txtNote;
@FXML
private TextField txtId;
public void initialize() {
jsonRead = new ReadJson();
TypeToken<List<Author>> authorToken = new TypeToken<List<Author>>() {
};
TypeToken<List<Editor>> editorToken = new TypeToken<List<Editor>>() {
};
try {
List<Author> listAuthors = jsonRead.readJson(new File(UrlAndPath.JSON_AUTORI), authorToken);
ObservableList<Author> authors = FXCollections.observableArrayList(listAuthors);
comboAuthor.setItems(authors);
comboAuthor.setCellFactory(new ComboListCell<Author>());
List<Editor> listEditors = jsonRead.readJson(new File(UrlAndPath.JSON_EDITORI), editorToken);
ObservableList<Editor> editors = FXCollections.observableArrayList(listEditors);
comboEditor.setItems(editors);
comboEditor.setCellFactory(new ComboListCell<Editor>());
} catch (IOException e) {
GenericDialog.showDialog(e.getMessage(), Alert.AlertType.ERROR);
}
}
public void initController(Book book) {
this.book = book;
Stage stage = (Stage) bookPane.getScene().getWindow();
stage.setTitle(book.getTitle());
txtTitle.setText(book.getTitle());
txtAuthor.setText(book.getAuthor());
txtEditor.setText(book.getEditor());
txtPrice.setText(book.getPrice());
txtIsbn.setText(book.getIsbn());
txtNote.setText(book.getNote());
txtId.setText(book.getId());
}
@FXML
private void onSaveClicked() {
if (book != null) {
// UPDATE
} else {
//ADD
}
}
}
a prescindere da javafx, qual'è il modo miglio per gesire casi del genere??