Crud JavaFX
Kali ini ane akan memberi tutor bagaimana crud (create, read, update, delete) di javafx. mungkin tutor ini sudah agak basi, tapi menurut ane para programmer java banyak yang belum tahu. oke langsung saja. untuk persiapan :
- Netbeans
- Xammp
- Scene Builder
- Paham MVC pattern
- kopi, susu, cemilan, rokok :)
- membuat Database Dan Table
1
| CREATE DATABASE `biodata` /*!40100 COLLATE 'latin1_swedish_ci' */; |
CREATE DATABASE `biodata` /*!40100 COLLATE 'latin1_swedish_ci' */;
1
2
3
4
5
6
7
8
9
| CREATE TABLE `tablebiodata` ( `id` VARCHAR(5) NOT NULL, `nama` VARCHAR(50) NULL DEFAULT NULL, `alamat` VARCHAR(50) NULL DEFAULT NULL, `tanggalLahir` DATE NULL DEFAULT NULL, PRIMARY KEY (`id`) ) COLLATE='latin1_swedish_ci' ENGINE=InnoDB; |
CREATE TABLE `tablebiodata` ( `id` VARCHAR(5) NOT NULL, `nama` VARCHAR(50) NULL DEFAULT NULL, `alamat` VARCHAR(50) NULL DEFAULT NULL, `tanggalLahir` DATE NULL DEFAULT NULL, PRIMARY KEY (`id`) ) COLLATE='latin1_swedish_ci' ENGINE=InnoDB;
- Buka Netbeans Dan Buat Project
- Buat package dengan urutan seperti ini
- Desain View Dengan Scene Builder seperti gambar dibawah ini.
jangan lupa setelah desain memberikan fx:id dan controllernya
- koneksi,java
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package biodata.koneksi; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import java.sql.Connection; import java.sql.SQLException; /** * * @author herudi-pc */ public class koneksi { private Connection con; public koneksi(){ } public Connection connect(){ if (con == null ){ MysqlDataSource db = new MysqlDataSource(); db.setDatabaseName( "biodata" ); db.setUser( "root" ); db.setPassword( "qwerty" ); try { con = db.getConnection(); } catch (SQLException e) { } } return con; } } |
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package biodata.koneksi; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import java.sql.Connection; import java.sql.SQLException; /** * * @author herudi-pc */ public class koneksi { private Connection con; public koneksi(){ } public Connection connect(){ if(con == null){ MysqlDataSource db = new MysqlDataSource(); db.setDatabaseName("biodata"); db.setUser("root"); db.setPassword("qwerty"); try { con = db.getConnection(); } catch (SQLException e) { } } return con; } }
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package biodata.model; import java.text.SimpleDateFormat; import java.util.Date; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; /** * * @author herudi-pc */ public class modelBiodata { private final StringProperty id = new SimpleStringProperty(); private final StringProperty nama = new SimpleStringProperty(); private final StringProperty alamat = new SimpleStringProperty(); private final ObjectProperty<Date> tanggalLahir = new SimpleObjectProperty<>(); private String formatTanggal; public modelBiodata() { } public String getId() { return id.get(); } public void setId( String value) { id.set(value); } public StringProperty idProperty() { return id; } public String getNama() { return nama.get(); } public void setNama( String value) { nama.set(value); } public StringProperty namaProperty() { return nama; } public String getAlamat() { return alamat.get(); } public void setAlamat( String value) { alamat.set(value); } public StringProperty alamatProperty() { return alamat; } public Date getTanggalLahir() { return tanggalLahir.get(); } public void setTanggalLahir(Date value) { tanggalLahir.set(value); } public ObjectProperty tanggalLahirProperty() { return tanggalLahir; } public String getFormatTanggal() { Date tanggal = getTanggalLahir(); SimpleDateFormat df = new SimpleDateFormat( "dd-MMMM-yyyy" ); String format = df.format(tanggal); return format; } public void setFormatTanggal( String formatTanggal) { this .formatTanggal = formatTanggal; } } |
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package biodata.model; import java.text.SimpleDateFormat; import java.util.Date; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; /** * * @author herudi-pc */ public class modelBiodata { private final StringProperty id = new SimpleStringProperty(); private final StringProperty nama = new SimpleStringProperty(); private final StringProperty alamat = new SimpleStringProperty(); private final ObjectProperty<Date> tanggalLahir = new SimpleObjectProperty<>(); private String formatTanggal; public modelBiodata() { } public String getId() { return id.get(); } public void setId(String value) { id.set(value); } public StringProperty idProperty() { return id; } public String getNama() { return nama.get(); } public void setNama(String value) { nama.set(value); } public StringProperty namaProperty() { return nama; } public String getAlamat() { return alamat.get(); } public void setAlamat(String value) { alamat.set(value); } public StringProperty alamatProperty() { return alamat; } public Date getTanggalLahir() { return tanggalLahir.get(); } public void setTanggalLahir(Date value) { tanggalLahir.set(value); } public ObjectProperty tanggalLahirProperty() { return tanggalLahir; } public String getFormatTanggal() { Date tanggal = getTanggalLahir(); SimpleDateFormat df = new SimpleDateFormat("dd-MMMM-yyyy"); String format = df.format(tanggal); return format; } public void setFormatTanggal(String formatTanggal) { this.formatTanggal = formatTanggal; } }
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 | /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package biodata.interfaces; import biodata.model.modelBiodata; import javafx.collections.ObservableList; /** * * @author herudi-pc */ public interface interBiodata { void insert (modelBiodata m); void delete (modelBiodata m); void update(modelBiodata m); ObservableList<modelBiodata> getAll(); ObservableList<modelBiodata> likeByNama( String a); void autoId(modelBiodata m); } |
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package biodata.interfaces; import biodata.model.modelBiodata; import javafx.collections.ObservableList; /** * * @author herudi-pc */ public interface interBiodata { void insert(modelBiodata m); void delete(modelBiodata m); void update(modelBiodata m); ObservableList<modelBiodata> getAll(); ObservableList<modelBiodata> likeByNama(String a); void autoId(modelBiodata m); }
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package biodata.implement; import biodata.interfaces.interBiodata; import biodata.koneksi.koneksi; import biodata.model.modelBiodata; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; import javafx.collections.FXCollections; import javafx.collections.ObservableList; public class implBiodata implements interBiodata { koneksi k; @Override public void insert (modelBiodata m) { k = new koneksi(); PreparedStatement ps; try { ps = k.connect().prepareStatement( "insert into tablebiodata values(?,?,?,?)" ); ps.setString( 1 , m.getId()); ps.setString( 2 , m.getNama()); ps.setString( 3 , m.getAlamat()); ps.setDate( 4 , (Date) m.getTanggalLahir()); ps.execute(); } catch (Exception e) { Logger.getLogger(implBiodata. class .getName()).log(Level.SEVERE, null , e); } } @Override public void delete (modelBiodata m) { k = new koneksi(); PreparedStatement ps; try { ps = k.connect().prepareStatement( "delete from tablebiodata where id = ?" ); ps.setString( 1 , m.getId()); ps.execute(); } catch (Exception e) { Logger.getLogger(implBiodata. class .getName()).log(Level.SEVERE, null , e); } } @Override public void update(modelBiodata m) { k = new koneksi(); PreparedStatement ps; try { ps = k.connect().prepareStatement( "update tablebiodata set nama=?, alamat=?, tanggalLahir=? where id = ?" ); ps.setString( 4 , m.getId()); ps.setString( 1 , m.getNama()); ps.setString( 2 , m.getAlamat()); ps.setDate( 3 , (Date) m.getTanggalLahir()); ps.execute(); } catch (Exception e) { Logger.getLogger(implBiodata. class .getName()).log(Level.SEVERE, null , e); } } @Override public ObservableList<modelBiodata> getAll() { k = new koneksi(); ObservableList<modelBiodata> listData = FXCollections.observableArrayList(); try { String sql = "select * from tablebiodata" ; ResultSet rs = k.connect().createStatement().executeQuery(sql); while (rs.next()) { modelBiodata m = new modelBiodata(); m.setId(rs.getString( 1 )); m.setNama(rs.getString( 2 )); m.setAlamat(rs.getString( 3 )); m.setTanggalLahir(rs.getDate( 4 )); listData.add(m); } } catch (Exception ex) { Logger.getLogger(implBiodata. class .getName()).log(Level.SEVERE, null , ex); } return listData; } @Override public ObservableList<modelBiodata> likeByNama( String a) { k = new koneksi(); ObservableList<modelBiodata> listData = FXCollections.observableArrayList(); try { String sql = "select * from tablebiodata where nama like '%" +a+ "%'" ; ResultSet rs = k.connect().createStatement().executeQuery(sql); while (rs.next()) { modelBiodata m = new modelBiodata(); m.setId(rs.getString( 1 )); m.setNama(rs.getString( 2 )); m.setAlamat(rs.getString( 3 )); m.setTanggalLahir(rs.getDate( 4 )); listData.add(m); } } catch (Exception ex) { Logger.getLogger(implBiodata. class .getName()).log(Level.SEVERE, null , ex); } return listData; } @Override public void autoId(modelBiodata m) { k = new koneksi(); try { ResultSet rs = k.connect().createStatement().executeQuery( "select * from tablebiodata" ); while (rs.next()){ String kode = rs.getString( 1 ).substring( 2 ); String auto = "" +( Integer .parseInt(kode)+ 1 ); String nol = "" ; if (auto.length()== 1 ) { nol = "00" ; } else if (auto.length()== 2 ) { nol = "0" ; } else if (auto.length()== 3 ) { nol = "" ; } m.setId( "B." +nol+auto); } if (m.getId()== null ) { m.setId( "B.001" ); } } catch (SQLException ex) { Logger.getLogger(implBiodata. class .getName()).log(Level.SEVERE, null , ex); } } } |
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package biodata.implement; import biodata.interfaces.interBiodata; import biodata.koneksi.koneksi; import biodata.model.modelBiodata; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; import javafx.collections.FXCollections; import javafx.collections.ObservableList; public class implBiodata implements interBiodata { koneksi k; @Override public void insert(modelBiodata m) { k = new koneksi(); PreparedStatement ps; try { ps = k.connect().prepareStatement("insert into tablebiodata values(?,?,?,?)"); ps.setString(1, m.getId()); ps.setString(2, m.getNama()); ps.setString(3, m.getAlamat()); ps.setDate(4, (Date) m.getTanggalLahir()); ps.execute(); } catch (Exception e) { Logger.getLogger(implBiodata.class.getName()).log(Level.SEVERE, null, e); } } @Override public void delete(modelBiodata m) { k = new koneksi(); PreparedStatement ps; try { ps = k.connect().prepareStatement("delete from tablebiodata where id = ?"); ps.setString(1, m.getId()); ps.execute(); } catch (Exception e) { Logger.getLogger(implBiodata.class.getName()).log(Level.SEVERE, null, e); } } @Override public void update(modelBiodata m) { k = new koneksi(); PreparedStatement ps; try { ps = k.connect().prepareStatement("update tablebiodata set nama=?, alamat=?, tanggalLahir=? where id = ?"); ps.setString(4, m.getId()); ps.setString(1, m.getNama()); ps.setString(2, m.getAlamat()); ps.setDate(3, (Date) m.getTanggalLahir()); ps.execute(); } catch (Exception e) { Logger.getLogger(implBiodata.class.getName()).log(Level.SEVERE, null, e); } } @Override public ObservableList<modelBiodata> getAll() { k = new koneksi(); ObservableList<modelBiodata> listData = FXCollections.observableArrayList(); try { String sql = "select * from tablebiodata"; ResultSet rs = k.connect().createStatement().executeQuery(sql); while (rs.next()) { modelBiodata m = new modelBiodata(); m.setId(rs.getString(1)); m.setNama(rs.getString(2)); m.setAlamat(rs.getString(3)); m.setTanggalLahir(rs.getDate(4)); listData.add(m); } } catch (Exception ex) { Logger.getLogger(implBiodata.class.getName()).log(Level.SEVERE, null, ex); } return listData; } @Override public ObservableList<modelBiodata> likeByNama(String a) { k = new koneksi(); ObservableList<modelBiodata> listData = FXCollections.observableArrayList(); try { String sql = "select * from tablebiodata where nama like '%"+a+"%'"; ResultSet rs = k.connect().createStatement().executeQuery(sql); while (rs.next()) { modelBiodata m = new modelBiodata(); m.setId(rs.getString(1)); m.setNama(rs.getString(2)); m.setAlamat(rs.getString(3)); m.setTanggalLahir(rs.getDate(4)); listData.add(m); } } catch (Exception ex) { Logger.getLogger(implBiodata.class.getName()).log(Level.SEVERE, null, ex); } return listData; } @Override public void autoId(modelBiodata m) { k = new koneksi(); try { ResultSet rs = k.connect().createStatement().executeQuery("select * from tablebiodata"); while(rs.next()){ String kode = rs.getString(1).substring(2); String auto = ""+(Integer.parseInt(kode)+1); String nol = ""; if (auto.length()==1) { nol = "00"; }else if (auto.length()==2) { nol = "0"; }else if (auto.length()==3) { nol = ""; } m.setId("B."+nol+auto); } if (m.getId()==null) { m.setId("B.001"); } } catch (SQLException ex) { Logger.getLogger(implBiodata.class.getName()).log(Level.SEVERE, null, ex); } } }
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 | /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package biodata.controller; import biodata.implement.implBiodata; import biodata.interfaces.interBiodata; import biodata.model.modelBiodata; import de.jensd.fx.fontawesome.AwesomeDude; import de.jensd.fx.fontawesome.AwesomeIcon; import java.net.URL; import java.sql.Date; import java.time.LocalDate; import java.util.ResourceBundle; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Alert; import javafx.scene.control.Button; import javafx.scene.control.DatePicker; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.TextArea; import javafx.scene.control.TextField; import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.input.KeyEvent; import javafx.scene.input.MouseEvent; import javafx.stage.StageStyle; /** * FXML Controller class * * @author herudi-pc */ public class biodataController implements Initializable { @FXML private TextField txtId; @FXML private TextField txtNama; @FXML private TextArea txtAlamat; @FXML private DatePicker dateTanggal; @FXML private Button btnSimpan; @FXML private Button btnHapus; @FXML private TableView<modelBiodata> tableData; @FXML private TableColumn<modelBiodata, String > colId; @FXML private TableColumn<modelBiodata, String > colNama; @FXML private TableColumn<modelBiodata, String > colAlamat; @FXML private TableColumn<modelBiodata, String > colTanggal; @FXML private TextField txtCari; @FXML private Button btnRefresh; interBiodata crudData = new implBiodata(); ObservableList<modelBiodata> listData; private String StatusKode; /** * Initializes the controller class. * @param url * @param rb */ @Override public void initialize(URL url, ResourceBundle rb) { colId.setCellValueFactory( (TableColumn.CellDataFeatures<modelBiodata, String > cellData) -> cellData.getValue().idProperty()); colNama.setCellValueFactory( (TableColumn.CellDataFeatures<modelBiodata, String > cellData) -> cellData.getValue().namaProperty()); colAlamat.setCellValueFactory( (TableColumn.CellDataFeatures<modelBiodata, String > cellData) -> cellData.getValue().alamatProperty()); colTanggal.setCellValueFactory( new PropertyValueFactory( "formatTanggal" )); listData = FXCollections.observableArrayList(); AwesomeDude.setIcon(btnSimpan, AwesomeIcon.CHECK_SQUARE, "15px" ); AwesomeDude.setIcon(btnRefresh, AwesomeIcon.CHAIN_BROKEN, "15px" ); AwesomeDude.setIcon(btnHapus, AwesomeIcon.ERASER, "15px" ); StatusKode = "0" ; tampilData(); autoId(); tableData.getSelectionModel().clearSelection(); // TODO } private void dialog(Alert.AlertType alertType, String s){ Alert alert = new Alert(alertType,s); alert.initStyle(StageStyle.UTILITY); alert.setTitle( "Info" ); alert.showAndWait(); } private void clear(){ txtId.clear(); txtNama.clear(); txtAlamat.clear(); txtCari.clear(); dateTanggal.setValue( null ); StatusKode = "0" ; } private void tampilData(){ listData = crudData.getAll(); tableData.setItems(listData); } private void autoId(){ modelBiodata m = new modelBiodata(); crudData.autoId(m); txtId.setText(m.getId()); } @FXML private void aksiSimpan(ActionEvent event) { modelBiodata m = new modelBiodata(); m.setId(txtId.getText()); m.setNama(txtNama.getText()); m.setAlamat(txtAlamat.getText()); m.setTanggalLahir(Date.valueOf(dateTanggal.getValue())); if (StatusKode.equals( "0" )) { crudData. insert (m); } else { crudData.update(m); } dialog(Alert.AlertType.INFORMATION, "Data Telah Tersimpan" ); tampilData(); clear(); autoId(); } @FXML private void aksiHapus(ActionEvent event) { modelBiodata m = new modelBiodata(); m.setId(txtId.getText()); crudData. delete (m); dialog(Alert.AlertType.INFORMATION, "Data Berhasil Dihapus" ); tampilData(); clear(); } @FXML private void klikTableData(MouseEvent event) { StatusKode = "1" ; try { modelBiodata klik = tableData.getSelectionModel().getSelectedItems().get( 0 ); txtId.setText(klik.getId()); txtNama.setText(klik.getNama()); txtAlamat.setText(klik.getAlamat()); dateTanggal.setValue(LocalDate.parse(klik.getTanggalLahir().toString())); } catch (Exception e) { } } @FXML private void aksiCari(KeyEvent event) { listData = crudData.likeByNama(txtCari.getText()); tableData.setItems(listData); } @FXML private void aksiRefresh(ActionEvent event) { clear(); tampilData(); autoId(); } } |
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package biodata.controller; import biodata.implement.implBiodata; import biodata.interfaces.interBiodata; import biodata.model.modelBiodata; import de.jensd.fx.fontawesome.AwesomeDude; import de.jensd.fx.fontawesome.AwesomeIcon; import java.net.URL; import java.sql.Date; import java.time.LocalDate; import java.util.ResourceBundle; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Alert; import javafx.scene.control.Button; import javafx.scene.control.DatePicker; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.TextArea; import javafx.scene.control.TextField; import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.input.KeyEvent; import javafx.scene.input.MouseEvent; import javafx.stage.StageStyle; /** * FXML Controller class * * @author herudi-pc */ public class biodataController implements Initializable { @FXML private TextField txtId; @FXML private TextField txtNama; @FXML private TextArea txtAlamat; @FXML private DatePicker dateTanggal; @FXML private Button btnSimpan; @FXML private Button btnHapus; @FXML private TableView<modelBiodata> tableData; @FXML private TableColumn<modelBiodata, String> colId; @FXML private TableColumn<modelBiodata, String> colNama; @FXML private TableColumn<modelBiodata, String> colAlamat; @FXML private TableColumn<modelBiodata, String> colTanggal; @FXML private TextField txtCari; @FXML private Button btnRefresh; interBiodata crudData = new implBiodata(); ObservableList<modelBiodata> listData; private String StatusKode; /** * Initializes the controller class. * @param url * @param rb */ @Override public void initialize(URL url, ResourceBundle rb) { colId.setCellValueFactory( (TableColumn.CellDataFeatures<modelBiodata, String> cellData) -> cellData.getValue().idProperty()); colNama.setCellValueFactory( (TableColumn.CellDataFeatures<modelBiodata, String> cellData) -> cellData.getValue().namaProperty()); colAlamat.setCellValueFactory( (TableColumn.CellDataFeatures<modelBiodata, String> cellData) -> cellData.getValue().alamatProperty()); colTanggal.setCellValueFactory(new PropertyValueFactory("formatTanggal")); listData = FXCollections.observableArrayList(); AwesomeDude.setIcon(btnSimpan, AwesomeIcon.CHECK_SQUARE, "15px"); AwesomeDude.setIcon(btnRefresh, AwesomeIcon.CHAIN_BROKEN, "15px"); AwesomeDude.setIcon(btnHapus, AwesomeIcon.ERASER, "15px"); StatusKode = "0"; tampilData(); autoId(); tableData.getSelectionModel().clearSelection(); // TODO } private void dialog(Alert.AlertType alertType,String s){ Alert alert = new Alert(alertType,s); alert.initStyle(StageStyle.UTILITY); alert.setTitle("Info"); alert.showAndWait(); } private void clear(){ txtId.clear(); txtNama.clear(); txtAlamat.clear(); txtCari.clear(); dateTanggal.setValue(null); StatusKode = "0"; } private void tampilData(){ listData = crudData.getAll(); tableData.setItems(listData); } private void autoId(){ modelBiodata m = new modelBiodata(); crudData.autoId(m); txtId.setText(m.getId()); } @FXML private void aksiSimpan(ActionEvent event) { modelBiodata m = new modelBiodata(); m.setId(txtId.getText()); m.setNama(txtNama.getText()); m.setAlamat(txtAlamat.getText()); m.setTanggalLahir(Date.valueOf(dateTanggal.getValue())); if (StatusKode.equals("0")) { crudData.insert(m); }else{ crudData.update(m); } dialog(Alert.AlertType.INFORMATION, "Data Telah Tersimpan"); tampilData(); clear(); autoId(); } @FXML private void aksiHapus(ActionEvent event) { modelBiodata m = new modelBiodata(); m.setId(txtId.getText()); crudData.delete(m); dialog(Alert.AlertType.INFORMATION, "Data Berhasil Dihapus"); tampilData(); clear(); } @FXML private void klikTableData(MouseEvent event) { StatusKode = "1"; try { modelBiodata klik = tableData.getSelectionModel().getSelectedItems().get(0); txtId.setText(klik.getId()); txtNama.setText(klik.getNama()); txtAlamat.setText(klik.getAlamat()); dateTanggal.setValue(LocalDate.parse(klik.getTanggalLahir().toString())); } catch (Exception e) { } } @FXML private void aksiCari(KeyEvent event) { listData = crudData.likeByNama(txtCari.getText()); tableData.setItems(listData); } @FXML private void aksiRefresh(ActionEvent event) { clear(); tampilData(); autoId(); } }
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | /* To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the template in the editor. */ /* Created on : Nov 6, 2014, 10:54:20 PM Author : herudi-pc */ .headerPane{ -fx- background-color : derive(grey, -30% ); } .table-view { -fx-base: white ; -fx-control-inner- background : white ; -fx- background-color : #c7c7c7 ; -fx-table-cell- border-color : transparent ; -fx-table-header- border-color : transparent ; -fx- padding : 2 ; } .table-view .column-header-background { -fx- background-color : #42539d ; } .table-view .column-header, .table-view .filler { -fx- size : 35 ; -fx- border-width : 0 0 0 0 ; -fx- background-color : transparent ; -fx- border-color : transparent transparent derive(-fx-base, 80% ) transparent ; -fx-border-insets: 0 10 1 0 ; } .table-view .column-header .label { -fx- font-size : 12px ; -fx- font-family : "Segoe UI bold" ; -fx-text-fill: white ; -fx-alignment: center-left ; } .table-view:focused .table-row-cell:filled:focused:selected { -fx- background-color : -fx-focus-color; } . table-cell { -fx-cell- size : 4.0em ; -fx- padding : 1em 0em 0.1em 0.1em ; -fx- font : 12px "Segoe UI" ; -fx-alignment: bottom- left ; } .table-row-cell:empty { -fx- background-color : #f8f8f8 ; -fx-base: transparent ; -fx-control-inner- background : transparent ; -fx-table-cell- border-color : transparent ; -fx-table-header- border-color : transparent ; -fx- padding : 0 ; } .table-row-cell:empty . table-cell { -fx- border-width : 0px ; } |
/* To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the template in the editor. */ /* Created on : Nov 6, 2014, 10:54:20 PM Author : herudi-pc */ .headerPane{ -fx-background-color: derive(grey, -30%); } .table-view { -fx-base: white; -fx-control-inner-background: white; -fx-background-color: #c7c7c7; -fx-table-cell-border-color: transparent; -fx-table-header-border-color: transparent; -fx-padding: 2; } .table-view .column-header-background { -fx-background-color: #42539d; } .table-view .column-header, .table-view .filler { -fx-size: 35; -fx-border-width: 0 0 0 0; -fx-background-color: transparent; -fx-border-color: transparent transparent derive(-fx-base, 80%) transparent; -fx-border-insets: 0 10 1 0; } .table-view .column-header .label { -fx-font-size: 12px; -fx-font-family: "Segoe UI bold"; -fx-text-fill: white; -fx-alignment: center-left; } .table-view:focused .table-row-cell:filled:focused:selected { -fx-background-color: -fx-focus-color; } .table-cell { -fx-cell-size: 4.0em; -fx-padding: 1em 0em 0.1em 0.1em; -fx-font: 12px "Segoe UI"; -fx-alignment: bottom-left; } .table-row-cell:empty { -fx-background-color: #f8f8f8; -fx-base: transparent; -fx-control-inner-background: transparent; -fx-table-cell-border-color: transparent; -fx-table-header-border-color: transparent; -fx-padding: 0; } .table-row-cell:empty .table-cell { -fx-border-width: 0px; }
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package biodata; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; /** * * @author herudi-pc */ public class Biodata extends Application { @Override public void start(Stage stage) throws Exception { Parent root = FXMLLoader.load(getClass().getResource( "/biodata/view/biodata.fxml" )); Scene scene = new Scene(root); stage.setScene(scene); stage.setTitle( "Biodata" ); stage.show(); } /** * @param args the command line arguments */ public static void main( String [] args) { launch(args); } } |
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package biodata; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; /** * * @author herudi-pc */ public class Biodata extends Application { @Override public void start(Stage stage) throws Exception { Parent root = FXMLLoader.load(getClass().getResource("/biodata/view/biodata.fxml")); Scene scene = new Scene(root); stage.setScene(scene); stage.setTitle("Biodata"); stage.show(); } /** * @param args the command line arguments */ public static void main(String[] args) { launch(args); } }ane kira sudah jelas tutornya semua source kode telah ane sisipkan diatas. mengenai desain di scene builder silahkan perdalam lagi, atau bila perlu tanya ke mbah google dan bisa juga bertanya di kolom komentar. Happy Coding . .
Langganan:
Posting Komentar
(
Atom
)
//di kodenya ditambang komentar tentang kodenya dong master ...
BalasHapusntar ditambahin . . .
Hapusini pakai JDK 8 Update berapa gan?
BalasHapusjdk - 8u40 gan
HapusTambahin lagi donk gan tutorial tentang Scene Buildernya, soalnya ane nubie banget nih :)
BalasHapusinsya allah ntr ditambah gan. . .
HapusMas untuk yang daftar baju, saya coba eror, di login user saya coba dalam combo box kosong juga kosong, tetap eror, kalau saya lihat dalam source code harusnya keluar jendela dialog, ini tidak sama sekali berbeda dengan biodata dimana erornya saya cek memberitahu belum connect, kalau daftar harga baju keluar erornya seperti ini :
BalasHapusException in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1774)
at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657)
....................................................................
sebenarnya banyak dibawahnya, tapi setahu saya baris pertama dan kedua yang penting, semoga ada pencerahanya. Terima kasih saya sudah belajar dari Mas Rudi, tapi saya penasaran untuk perpindahan scene terjadi eror umpama saya buat frame dengan menu bar dengan menu item informasi, waktu saya tekan pilihan menu informasi keluar eror yang sama seperti yang terjadi pada daftar harga baju.
Selamat pagi Mas Bisa kasih Contoh Input Data Ke Database Dari tableView, Bukan Dari TexField
BalasHapusTerima Kasih
Selamat pagi Mas Bisa kasih Contoh Input Data Ke Database Dari tableView, Bukan Dari TexField
BalasHapusTerima Kasih
incompatibletypes : StringProperty cannot be converted to String
BalasHapusError sewaktu mengimplement interfaces biodata di implBiodata
itu kenapa? ya
oke banget gan
BalasHapusSolder uap