|
| 1 | +# MultiSourceDataFusion |
| 2 | +NJU iip kjb MutiSourceDataFusion |
| 3 | + |
| 4 | +## Java Maven 创建 fx程序 |
| 5 | + |
| 6 | +### 编译问题 |
| 7 | + |
| 8 | +1. java编译的过程默认不会将资源文件加入到编译中,IDEA创建的maven项目,编译后的文件保存在target中。 |
| 9 | + |
| 10 | + fxml,css等文件未被加入到编译,如果希望通过 |
| 11 | + |
| 12 | + ```java |
| 13 | + getClass().getResource() |
| 14 | + ``` |
| 15 | + |
| 16 | + 来加载资源,必须保证这些文件加入编译,出现在target中 |
| 17 | + |
| 18 | + 可以在pom.xml中添加编译的配置类似如下 |
| 19 | + |
| 20 | + ```xml |
| 21 | + <build> |
| 22 | + <resources> |
| 23 | + <resource> |
| 24 | + <directory>src/main/java</directory> |
| 25 | + <includes> |
| 26 | + <include>**/*.fxml</include> |
| 27 | + <include>**/*.css</include> |
| 28 | + <include>**/*.png</include> |
| 29 | + </includes> |
| 30 | + <filtering>true</filtering> |
| 31 | + </resource> |
| 32 | + </resources> |
| 33 | + </build> |
| 34 | + ``` |
| 35 | + |
| 36 | + |
| 37 | + |
| 38 | + |
| 39 | +### Controller变量命名统一 |
| 40 | + |
| 41 | +1. 每一个组件的命名尽量按照比如 |
| 42 | + |
| 43 | + 一个账号存在 TextField 的controller中,取所有的大写字母以tf作为前缀 |
| 44 | + |
| 45 | + 比如Button这种只有一个大写的,可以以比较通用的格式如btn作为前缀 |
| 46 | + |
| 47 | + ```java |
| 48 | + private TextField account; |
| 49 | + private Button btnLogin; |
| 50 | + ``` |
| 51 | + |
| 52 | + 如果是fxml中文件定义的变量请按照正确的前缀命名 |
| 53 | + |
| 54 | + ```java |
| 55 | + @FXML |
| 56 | + private Label LblMainTitle; |
| 57 | + @FXML |
| 58 | + private AnchorPane APLoadData; |
| 59 | + @FXML |
| 60 | + private AnchorPane APParticiple; |
| 61 | + @FXML |
| 62 | + private AnchorPane APEntity; |
| 63 | + @FXML |
| 64 | + private AnchorPane APSetting; |
| 65 | + @FXML |
| 66 | + private BorderPane BPMainViewPane; |
| 67 | + ``` |
| 68 | + |
| 69 | + 如果是辅助的定义的变量 |
| 70 | + 就根据普通的驼峰命名法命名 |
| 71 | + |
| 72 | + ```java |
| 73 | + private AnchorPane currentMenuPane; |
| 74 | + private AnchorPane connectionConfigPane; |
| 75 | + private List<MenuModule> menuModules; |
| 76 | + ``` |
| 77 | + |
| 78 | + |
| 79 | +### 直接在代码中添加控件的方式 |
| 80 | + |
| 81 | +```java |
| 82 | +public class Login extends Application { |
| 83 | + |
| 84 | + @Override |
| 85 | + public void start(Stage primaryStage) { |
| 86 | + primaryStage.setTitle("JavaFX Welcome"); |
| 87 | + GridPane grid = new GridPane(); |
| 88 | + grid.setAlignment(Pos.CENTER); |
| 89 | + grid.setHgap(10); |
| 90 | + grid.setVgap(10); |
| 91 | + grid.setPadding(new Insets(25, 25, 25, 25)); |
| 92 | + |
| 93 | + Text scenetitle = new Text("Welcome"); |
| 94 | + scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20)); |
| 95 | + grid.add(scenetitle, 0, 0, 2, 1); |
| 96 | + |
| 97 | + Label userName = new Label("User Name:"); |
| 98 | + grid.add(userName, 0, 1); |
| 99 | + |
| 100 | + TextField userTextField = new TextField(); |
| 101 | + grid.add(userTextField, 1, 1); |
| 102 | + |
| 103 | + Label pw = new Label("Password:"); |
| 104 | + grid.add(pw, 0, 2); |
| 105 | + |
| 106 | + PasswordField pwBox = new PasswordField(); |
| 107 | + grid.add(pwBox, 1, 2); |
| 108 | + |
| 109 | + Button btn = new Button("Sign in"); |
| 110 | + HBox hbBtn = new HBox(10); |
| 111 | + hbBtn.setAlignment(Pos.BOTTOM_RIGHT); |
| 112 | + hbBtn.getChildren().add(btn); |
| 113 | + grid.add(hbBtn, 1, 4); |
| 114 | + |
| 115 | + final Text actiontarget = new Text(); |
| 116 | + grid.add(actiontarget, 0, 6); |
| 117 | + grid.setColumnSpan(actiontarget, 2); |
| 118 | + grid.setHalignment(actiontarget, RIGHT); |
| 119 | + actiontarget.setId("actiontarget"); |
| 120 | + btn.setOnAction(e -> { |
| 121 | + |
| 122 | + @Override |
| 123 | + public void handle(ActionEvent e) { |
| 124 | + actiontarget.setFill(Color.FIREBRICK); |
| 125 | + actiontarget.setText("Sign in button pressed"); |
| 126 | + } |
| 127 | + }); |
| 128 | + btn.setOnAction(new EventHandler<ActionEvent>() { |
| 129 | + |
| 130 | + @Override |
| 131 | + public void handle(ActionEvent e) { |
| 132 | + actiontarget.setFill(Color.FIREBRICK); |
| 133 | + actiontarget.setText("Sign in button pressed"); |
| 134 | + } |
| 135 | + }); |
| 136 | + |
| 137 | + Scene scene = new Scene(grid, 300, 275); |
| 138 | + primaryStage.setScene(scene); |
| 139 | + primaryStage.show(); |
| 140 | + } |
| 141 | + |
| 142 | + public static void main(String[] args) { |
| 143 | + launch(args); |
| 144 | + } |
| 145 | + |
| 146 | +} |
| 147 | +``` |
| 148 | + |
| 149 | + |
| 150 | + |
| 151 | +### Reference |
| 152 | + |
| 153 | +1. 登录界面的参考:https://blog.csdn.net/legendnovo/article/details/10555941 |
0 commit comments