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:
a prescindere da javafx, qual'è il modo miglio per gesire casi del genere??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 } } }

Rispondi quotando