最近业务需求,需要点击一个按钮然后显示数值,初涉JavaFX,查看了相关的文档,简单的做了一个Demo
1、首先用Java secene builder做出一个页面,页面如下:
设置好各个组件的fx:id。如下所示:
1 @FXML 2 privateResourceBundle resources; 3 4 @FXML 5 privateURL location; 6 7 @FXML 8 private TableColumn<MaterialInfo, String>codeCol; 9 10 @FXML 11 private TableColumn<MaterialInfo, String>createDateCol; 12 13 @FXML 14 private TableView<MaterialInfo> dataTable; //tableView 15 16 @FXML 17 private TableColumn<MaterialInfo, String>isActiveCol; 18 19 @FXML 20 private TableColumn<MaterialInfo, String>nameCol; 21 22 @FXML 23 privateLabel nowDate; 24 25 @FXML 26 private TableColumn<MaterialInfo, String>seqnumCol; 27 28 @FXML 29 private TableColumn<MaterialInfo, String>shortCodeCol; 30 31 @FXML 32 privateButton showData; 33 34 @FXML 35 privateButton udateDate; 36 37 private List<MaterialInfo> materialList = new ArrayList<MaterialInfo>(); //放置数据的集合 38 39 40 41 ObservableList<MaterialInfo> list = FXCollections.observableArrayList(); //javaFX 的数据集合
初始化该Sence,其中定义的MterialInfo是放置每列的,具体如下:
1 privateSimpleStringProperty num; 2 privateSimpleStringProperty name; 3 privateSimpleStringProperty code; 4 privateSimpleStringProperty shortCode; 5 6 privateSimpleStringProperty isActive; 7 privateSimpleStringProperty createDate; 8 9 publicString getNum(){ 10 returnnum.get(); 11 } 12 13 publicString getName(){ 14 returnname.get(); 15 } 16 17 publicString getCode(){ 18 returncode.get(); 19 } 20 21 publicString getShortCode(){ 22 returnshortCode.get(); 23 } 24 25 publicString getIsActive(){ 26 returnisActive.get(); 27 } 28 29 publicString getCreateDate(){ 30 returncreateDate.get(); 31 } 32 33 public ObservableValue<String>numProperty(){ 34 returnnum; 35 } 36 public ObservableValue<String>nameProperty(){ 37 returnname; 38 } 39 public ObservableValue<String>codeProperty(){ 40 returncode; 41 } 42 public ObservableValue<String>shortCodeProperty(){ 43 returnshortCode; 44 } 45 public ObservableValue<String>isActiveProperty(){ 46 returnisActive; 47 } 48 public ObservableValue<String>createDateProperty(){ 49 returncreateDate; 50 } 51 52 public voidsetNum(String num){ 53 this.num = newSimpleStringProperty(num); 54 55 } 56 public voidsetName(String name){ 57 this.name = newSimpleStringProperty(name); 58 59 } 60 public voidsetCode(String code){ 61 this.code = newSimpleStringProperty(code); 62 63 } 64 public voidsetShortCode(String shortCode){ 65 this.shortCode = newSimpleStringProperty(shortCode); 66 67 } 68 public voidsetIsActive(String isActive){ 69 this.isActive = newSimpleStringProperty(isActive); 70 71 } 72 public voidsetCreateDate(String createDate){ 73 this.createDate = newSimpleStringProperty(createDate); 74 75 } 76
然后初始化Sence
1 @Override 2 public voidinitialize(URL location, ResourceBundle resources) { 3 Date date = newDate(); 4 String now = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date); 5 nowDate.setText(now); 6 dataTable.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY); 7 configTableView(); 8 initButton(); 9 }
1 /** 2 * 配置表格,绑定表格的每列 3 */ 4 private voidconfigTableView() { 5 seqnumCol.setCellValueFactory(new PropertyValueFactory<MaterialInfo,String>("num")); 6 nameCol.setCellValueFactory(new PropertyValueFactory<MaterialInfo,String>("name")); 7 codeCol.setCellValueFactory(new PropertyValueFactory<MaterialInfo,String>("code")); 8 shortCodeCol.setCellValueFactory(new PropertyValueFactory<MaterialInfo,String>("shortCode")); 9 isActiveCol.setCellValueFactory(new PropertyValueFactory<MaterialInfo,String>("isActive")); 10 createDateCol.setCellValueFactory(new PropertyValueFactory<MaterialInfo,String>("createDate")); 11 dataTable.setItems(list); 12 } 13 14 /** 15 * 初始化按钮功能,绑定按钮的事件 16 */ 17 private voidinitButton() { 18 19 showData.setOnAction(new EventHandler<ActionEvent>() { 20 21 @Override 22 public voidhandle(ActionEvent arg0) { 23 dataTable.getItems().clear(); 24 showData(); 25 } 26 }); 27 udateDate.setOnAction(new EventHandler<ActionEvent>() { 28 29 @Override 30 public voidhandle(ActionEvent arg0) { 31 updateData();//该方法还没有做,以后补上 32 } 33 34 35 }); 36 } 37 38 39 protected voidupdateData() { 40 //TODO Auto-generated method stub 41 42 } 43 44 /** 45 * 展示数据 46 */ 47 protected voidshowData() { 48 if(generateDate()!=null){ 49 materialList =generateDate(); 50 } 51 System.out.println(materialList.size()+"----"+materialList.get(0).getName()); 52 list.addAll(materialList); 53 dataTable.setItems(list); 54 } 55 56 /** 57 * 生成数据 58 * @return 59 */ 60 private List<MaterialInfo>generateDate() { 61 List<MaterialInfo> miList = new ArrayList<MaterialInfo>(); 62 String name = "material"; 63 String code = "1101"; 64 String shortCode = "A"; 65 String isActive = "是"; 66 Date date = newDate(); 67 String nowDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:").format(date); 68 for(int i=0;i<10;i++){ 69 MaterialInfo mi = newMaterialInfo(); 70 mi.setNum(i+1+""); 71 mi.setName(name+i); 72 mi.setCode(code+i); 73 mi.setIsActive(isActive); 74 mi.setShortCode(shortCode+i); 75 mi.setCreateDate(nowDate+i); 76 miList.add(mi); 77 } 78 returnmiList; 79 }
至此结束,程序运行成功。效果图如下所示: