最近业务需求,需要点击一个按钮然后显示数值,初涉JavaFX,查看了相关的文档,简单的做了一个Demo

1、首先用Java secene builder做出一个页面,页面如下:

javafx 特效 javafx demo_List

设置好各个组件的fx:id。如下所示:

1     @FXML
 2     private ResourceBundle resources;
 3 
 4     @FXML
 5     private URL 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     private Label nowDate;
24 
25     @FXML
26     private TableColumn<MaterialInfo, String> seqnumCol;
27 
28     @FXML
29     private TableColumn<MaterialInfo, String> shortCodeCol;
30 
31     @FXML
32     private Button showData;
33 
34     @FXML
35     private Button udateDate;
36 
37     private List<MaterialInfo> materialList = new ArrayList<MaterialInfo>(); //放置数据的集合
38     
39     
40 
41     ObservableList<MaterialInfo> list = FXCollections.observableArrayList(); //javaFX 的数据集合

初始化该Sence,其中定义的MterialInfo是放置每列的,具体如下:

1 private SimpleStringProperty num;
 2     private SimpleStringProperty name;
 3     private SimpleStringProperty code;
 4     private SimpleStringProperty shortCode;
 5     
 6     private SimpleStringProperty isActive;
 7     private SimpleStringProperty createDate;
 8     
 9     public String getNum(){
10         return num.get();
11     }
12     
13     public String getName(){
14         return name.get();
15     }
16     
17     public String getCode(){
18         return code.get();
19     }
20     
21     public String getShortCode(){
22         return shortCode.get();
23     }
24     
25     public String getIsActive(){
26         return isActive.get();
27     }
28     
29     public String getCreateDate(){
30         return createDate.get();
31     }
32     
33     public ObservableValue<String> numProperty(){
34         return num;
35     }
36     public ObservableValue<String> nameProperty(){
37         return name;
38     }
39     public ObservableValue<String> codeProperty(){
40         return code;
41     }
42     public ObservableValue<String> shortCodeProperty(){
43         return shortCode;
44     }
45     public ObservableValue<String> isActiveProperty(){
46         return isActive;
47     }
48     public ObservableValue<String> createDateProperty(){
49         return createDate;
50     }
51     
52     public void setNum(String num){
53         this.num = new SimpleStringProperty(num);
54         
55     }
56     public void setName(String name){
57         this.name = new SimpleStringProperty(name);
58         
59     }
60     public void setCode(String code){
61         this.code = new SimpleStringProperty(code);
62         
63     }
64     public void setShortCode(String shortCode){
65         this.shortCode = new SimpleStringProperty(shortCode);
66         
67     }
68     public void setIsActive(String isActive){
69         this.isActive = new SimpleStringProperty(isActive);
70         
71     }    
72     public void setCreateDate(String createDate){
73         this.createDate = new SimpleStringProperty(createDate);
74         
75     }
76

然后初始化Sence

1 @Override
2     public void initialize(URL location, ResourceBundle resources) {
3         Date date = new Date();
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 void configTableView() {
 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 void initButton() {
18         
19         showData.setOnAction(new EventHandler<ActionEvent>() {
20             
21             @Override
22             public void handle(ActionEvent arg0) {
23                 dataTable.getItems().clear();
24                 showData();
25             }
26         });
27         udateDate.setOnAction(new EventHandler<ActionEvent>() {
28 
29             @Override
30             public void handle(ActionEvent arg0) {
31                 updateData();//该方法还没有做,以后补上
32             }
33             
34             
35         });
36     }
37 
38 
39     protected void updateData() {
40         // TODO Auto-generated method stub
41         
42     }
43 
44     /**
45      * 展示数据
46      */
47     protected void showData() {
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 = new Date();
67         String nowDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:").format(date);
68         for(int i=0;i<10;i++){
69             MaterialInfo mi = new MaterialInfo();
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         return miList;
79     }

至此结束,程序运行成功。效果图如下所示:

javafx 特效 javafx demo_表格数据显示_02

高质量的代码就是对程序自己最好的注释。当你打算要添加注释时,问问自己,“我如何能改进编码以至于根本不需要添加注释?”改进你的代码,然后才是用注释使它更清楚。