public class TabelController implements Initializable { private ArrayList transaksiKeuanganArray; private xstream> dataXML; ObservableList dataTransaksiKeuangan; int transaksiKeuanganIndex; TransaksiKeuangan updatedTransaksiKeuangan = null; @FXML private TableView tbKeuangan; @FXML private TableColumn tcKeterangan; @FXML private TableColumn tcTanggal; @FXML private TableColumn tcNominal; @FXML private TableColumn tcJenisTransaksi; @FXML private Button btnHapus; @FXML private Button btnUbah; // @FXML private void handleButtonAction(ActionEvent event) { try { } catch (NumberFormatException e) { } } @FXML private void handleTableClick(MouseEvent event) { btnHapus.setDisable(false); btnUbah.setDisable(false); } @FXML private void handleUpdateAction(ActionEvent event) throws IOException { try { // do something with selected proosal int selectedIndex; TransaksiKeuangan selectedTransaksiKeuangan; selectedTransaksiKeuangan = (TransaksiKeuangan) tbKeuangan.getSelectionModel().getSelectedItem(); selectedIndex = tbKeuangan.getSelectionModel().getSelectedIndex(); // deselect proposal tbKeuangan.getSelectionModel().select(null); btnHapus.setDisable(true); btnUbah.setDisable(true); // send selected proposal to update view UpdateController controller = new UpdateController(); controller.setTransaksiKeuanganArrayList(transaksiKeuanganArray); controller.setDataXML(dataXML); controller.setTransaksiKeuangan(selectedTransaksiKeuangan, selectedIndex); FXMLLoader loader = new FXMLLoader(); loader.setLocation(laporan.UpdateController.class.getResource("Update.fxml")); loader.setController(controller); Stage dialogStage = new Stage(); dialogStage.setTitle("testing"); dialogStage.initModality(Modality.APPLICATION_MODAL); Scene scene = new Scene(loader.load()); dialogStage.setScene(scene); // Show the dialog and wait until the user closes it dialogStage.showAndWait(); } catch (IOException e) { System.err.println(String.format("Error: %s", e.getMessage())); } } //tombol hapus @FXML private void handleHapusButtonAction(ActionEvent event) { ObservableList selectedTransaksiKeuangan, allTransaksiKeuangans; allTransaksiKeuangans = tbKeuangan.getItems(); selectedTransaksiKeuangan = tbKeuangan.getSelectionModel().getSelectedItems(); // hapus dari tabel selectedTransaksiKeuangan.forEach(allTransaksiKeuangans::remove); tbKeuangan.getSelectionModel().select(null); // save to xml ArrayList dataTransaksiKeuanganBaru = new ArrayList<>(allTransaksiKeuangans); dataXML.saveToXML(dataTransaksiKeuanganBaru); btnHapus.setDisable(true); btnUbah.setDisable(true); } /** * Initializes the controller class. * * @param url * @param rb */ @Override public void initialize(URL url, ResourceBundle rb) { dataXML = new xstream(TransaksiKeuangan.XML_FILE_NAME, transaksiKeuanganArray); transaksiKeuanganArray = dataXML.loadXml(); dataTransaksiKeuangan = observableArrayList(transaksiKeuanganArray); tcKeterangan.setCellValueFactory(new PropertyValueFactory<>("keterangan")); tcNominal.setCellValueFactory(new PropertyValueFactory<>("nominal")); tcTanggal.setCellValueFactory(new PropertyValueFactory<>("tanggal")); tcJenisTransaksi.setCellValueFactory(new PropertyValueFactory<>("jenisTransaksi")); tbKeuangan.setItems(dataTransaksiKeuangan); } }