package javafxtableview5;
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
/**
*
* @author Joko Adianto
* Released under GPLv3
*/
public class JavaFXTableView5 extends Application {public static class Member{
private final SimpleStringProperty memberId;
private final SimpleStringProperty memberName;
private final SimpleStringProperty memberAddress;
Member(String memberId, String memberName, String memberAddress) {
this.memberId = new SimpleStringProperty(memberId);
this.memberName = new SimpleStringProperty(memberName);
this.memberAddress = new SimpleStringProperty(memberAddress);
}
public String getMemberId() {
return memberId.get();
}
public void setMemberId(String memberId) {
this.memberId.set(memberId);
}
public String getMemberName() {
return memberName.get();
}
public void setMemberName(String memberName) {
this.memberName.set(memberName);
}
public String getMemberAddress() {
return memberAddress.get();
}
public void setMemberAddress(String memberAddress) {
this.memberAddress.set(memberAddress);
}
}
StackPane root;
Stage stage;
Scene scene;
//Id
HBox hbxId;
Label lblId;
TextField txfId;
//Name
HBox hbxName;
Label lblName;
TextField txfName;
//Name
HBox hbxAddress;
Label lblAddress;
TextField txfAddress;
//Button
HBox hbxButton;
Button btnSave;
Button btnCancel;
//Table
private final TableView<Member> tbvMember = new TableView<>();
private final ObservableList<Member> obsMember =
FXCollections.observableArrayList();
VBox vbx;
{
hbxId = new HBox();
lblId = new Label("Id");
lblId.setMinWidth(60);
txfId = new TextField();
hbxId.getChildren().addAll(lblId, txfId);
hbxName = new HBox();
lblName = new Label("Name");
lblName.setMinWidth(60);
txfName = new TextField();
hbxName.getChildren().addAll(lblName, txfName);
hbxAddress = new HBox();
lblAddress = new Label("Address");
lblAddress.setMinWidth(60);
txfAddress = new TextField();
hbxAddress.getChildren().addAll(lblAddress, txfAddress);
//1st col
TableColumn memberIdCol = new TableColumn("Id");
memberIdCol.setMinWidth(50);
memberIdCol.setCellValueFactory(
new PropertyValueFactory<>("memberId"));
//2st col
TableColumn memberNameCol = new TableColumn("Member Name");
memberNameCol.setMinWidth(200);
memberNameCol.setCellValueFactory(
new PropertyValueFactory<>("memberName"));
//3rd col
TableColumn memberAddressCol = new TableColumn("Member Address");
memberAddressCol.setMinWidth(200);
memberAddressCol.setCellValueFactory(
new PropertyValueFactory<>("memberAddress"));
//TableView's columns
tbvMember.getColumns().addAll(memberIdCol, memberNameCol, memberAddressCol);
//TableViews and ObservableList wiring
tbvMember.setItems(obsMember);
btnSave = new Button();
btnSave.setMinWidth(100);
btnSave.setText("Save");
btnSave.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
String strId = txfId.getText();
String strName = txfName.getText();
String strAddress = txfAddress.getText();
obsMember.add(new Member(strId, strName, strAddress));
txfId.setText("");
txfName.setText("");
}
});
btnCancel = new Button();
btnCancel.setText("Cancel");
btnCancel.setMinWidth(100);
btnCancel.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
txfId.setText("");
txfName.setText("");
}
});
hbxButton = new HBox();
hbxButton.setAlignment(Pos.CENTER);
hbxButton.setSpacing(200);
hbxButton.getChildren().addAll(btnSave, btnCancel);
hbxButton.setSpacing(250);
vbx = new VBox();
vbx.getChildren().addAll(hbxId, hbxName, hbxAddress, hbxButton, tbvMember);
root = new StackPane();
root.getChildren().add(vbx);
scene = new Scene(root, vbx.getMinWidth(), 300);
}
@Override
public void start(Stage primaryStage)
{
stage = primaryStage;
stage.setTitle("TableView ");
stage.setScene(scene);
stage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
No comments:
Post a Comment