diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 70049bb..0f3e393 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -7,52 +7,17 @@ - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - + @@ -82,39 +47,67 @@ - + - - + + - - + + - - - - - - - + - - + + + + + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -122,61 +115,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -252,11 +239,6 @@ @@ -414,6 +401,18 @@ + + + + + + + + + + + + @@ -426,6 +425,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -452,7 +488,7 @@ - + @@ -469,21 +505,21 @@ + + + - - - + - @@ -498,7 +534,7 @@ - + - - @@ -643,7 +679,8 @@ - + + 1561745555309 @@ -680,7 +717,14 @@ - @@ -716,7 +760,7 @@ - @@ -729,9 +773,10 @@ + - - + + @@ -739,8 +784,8 @@ - - + + @@ -841,7 +886,8 @@ - @@ -924,12 +970,6 @@ @@ -1003,81 +1043,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -1102,23 +1068,7 @@ - - - - - - - - - - - - - - - - - + @@ -1129,18 +1079,6 @@ - - - - - - - - - - - - @@ -1179,96 +1117,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -1294,22 +1143,12 @@ - - - - - - - - - - - + @@ -1318,34 +1157,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1360,65 +1171,13 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + @@ -1427,9 +1186,272 @@ + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/cn/edu/scau/biubiusuisui/config/FXPlusApplication.java b/src/main/java/cn/edu/scau/biubiusuisui/config/FXPlusApplication.java index 7acf29a..8e4672f 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/config/FXPlusApplication.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/config/FXPlusApplication.java @@ -27,7 +27,10 @@ public class FXPlusApplication { private static BeanBuilder beanBuilder; + public static boolean IS_SCENE_BUILDER = true; + public static void start(Class clazz, BeanBuilder beanBuilder){ + IS_SCENE_BUILDER = false; FXPlusApplication.beanBuilder = beanBuilder; Annotation []annotations = clazz.getDeclaredAnnotations(); for(Annotation annotation : annotations){ diff --git a/src/main/java/cn/edu/scau/biubiusuisui/entity/FXBaseController.java b/src/main/java/cn/edu/scau/biubiusuisui/entity/FXBaseController.java index 6daae44..720cdab 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/entity/FXBaseController.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/entity/FXBaseController.java @@ -2,6 +2,7 @@ package cn.edu.scau.biubiusuisui.entity; import cn.edu.scau.biubiusuisui.annotation.FXController; import cn.edu.scau.biubiusuisui.config.FXMLLoaderPlus; +import cn.edu.scau.biubiusuisui.config.FXPlusApplication; import cn.edu.scau.biubiusuisui.utils.StringUtils; import javafx.scene.layout.Pane; import javafx.stage.Stage; @@ -49,11 +50,12 @@ public class FXBaseController extends Pane { } } //load fxml file to show panel in scene builder - if(isController) { + if(isController && FXPlusApplication.IS_SCENE_BUILDER == true) { FXMLLoaderPlus fxmlLoader = new FXMLLoaderPlus(getClass().getClassLoader().getResource(fxController.path())); fxmlLoader.setRoot(this); fxmlLoader.setController(this); fxmlLoader.setShow(true); + System.out.println("?"); try { fxmlLoader.load(); } catch (IOException e) { diff --git a/src/main/java/cn/edu/scau/biubiusuisui/example/expressionDemo/Main2.java b/src/main/java/cn/edu/scau/biubiusuisui/example/expressionDemo/Main2.java index 0889c6f..3bccc91 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/example/expressionDemo/Main2.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/example/expressionDemo/Main2.java @@ -19,7 +19,7 @@ import javafx.stage.StageStyle; * @Date:2019/7/4 11:36 */ @FXController(path = "Main.fxml") -@FXWindow(title = "hello", resizable = true, style = StageStyle.UNDECORATED) +@FXWindow(title = "hello", resizable = true, draggable = true) public class Main2 extends FXBaseController { @FXData @@ -31,6 +31,8 @@ public class Main2 extends FXBaseController { ) Student student = new Student(); + @FXML + private PasswordField psw; @FXML private Label label; @@ -47,19 +49,17 @@ public class Main2 extends FXBaseController { @FXML private Label usrMsg; - @FXML - private PasswordField psw; - + @FXBind("text=${student.name}") @FXML private Label pswMsg; @FXML void login(ActionEvent event) { System.out.println("user:" + student.getName()); - System.out.println("psw:"+student.getPassword()); - if("admin".equals(student.getName())&&"admin".equals(student.getPassword())){ + System.out.println("psw:" + student.getPassword()); + if ("admin".equals(student.getName()) && "admin".equals(student.getPassword())) { System.out.println("Ok"); - }else{ + } else { System.out.println("fail"); } } diff --git a/src/main/java/cn/edu/scau/biubiusuisui/example/moveDemo/CircleBean.java b/src/main/java/cn/edu/scau/biubiusuisui/example/moveDemo/CircleBean.java new file mode 100644 index 0000000..7e22f17 --- /dev/null +++ b/src/main/java/cn/edu/scau/biubiusuisui/example/moveDemo/CircleBean.java @@ -0,0 +1,42 @@ +package cn.edu.scau.biubiusuisui.example.moveDemo; + +import cn.edu.scau.biubiusuisui.annotation.FXEntity; +import cn.edu.scau.biubiusuisui.annotation.FXField; + +/** + * @Author jack + * @Date:2019/7/25 9:24 + */ +@FXEntity +public class CircleBean { + + @FXField + double x = 0; + + @FXField + double y = 0; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + + @Override + public String toString() { + return "CircleBean{" + + "x=" + x + + ", y=" + y + + '}'; + } +} diff --git a/src/main/java/cn/edu/scau/biubiusuisui/example/moveDemo/Demo.java b/src/main/java/cn/edu/scau/biubiusuisui/example/moveDemo/Demo.java new file mode 100644 index 0000000..89fc49d --- /dev/null +++ b/src/main/java/cn/edu/scau/biubiusuisui/example/moveDemo/Demo.java @@ -0,0 +1,19 @@ +package cn.edu.scau.biubiusuisui.example.moveDemo; + +import cn.edu.scau.biubiusuisui.annotation.FXScan; +import cn.edu.scau.biubiusuisui.config.FXPlusApplication; +import javafx.application.Application; +import javafx.stage.Stage; + +/** + * @Author jack + * @Date:2019/6/25 7:05 + */ +@FXScan(base = {"cn.edu.scau.biubiusuisui.example.moveDemo"}) +//项目目录中带有中文字符会导致无法启动 +public class Demo extends Application { + @Override + public void start(Stage primaryStage) throws Exception { + FXPlusApplication.start(Demo.class); + } +} diff --git a/src/main/java/cn/edu/scau/biubiusuisui/example/moveDemo/Main2.java b/src/main/java/cn/edu/scau/biubiusuisui/example/moveDemo/Main2.java new file mode 100644 index 0000000..f4fba7e --- /dev/null +++ b/src/main/java/cn/edu/scau/biubiusuisui/example/moveDemo/Main2.java @@ -0,0 +1,72 @@ +package cn.edu.scau.biubiusuisui.example.moveDemo; + +import cn.edu.scau.biubiusuisui.annotation.FXBind; +import cn.edu.scau.biubiusuisui.annotation.FXController; +import cn.edu.scau.biubiusuisui.annotation.FXData; +import cn.edu.scau.biubiusuisui.annotation.FXWindow; +import cn.edu.scau.biubiusuisui.entity.FXBaseController; +import cn.edu.scau.biubiusuisui.example.Student; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.PasswordField; +import javafx.scene.control.TextField; +import javafx.scene.shape.Circle; + +/** + * @Author jack + * @Date:2019/7/4 11:36 + */ +@FXController(path = "moveDemo.fxml") +@FXWindow(title = "hello", resizable = true, draggable = true) +public class Main2 extends FXBaseController { + + @FXML + @FXBind({"layoutX=${bean.x}","layoutY=${bean.y}"}) + private Circle circle; + + @FXData + CircleBean bean = new CircleBean(); + + @FXML + @FXBind("text=${bean.x}") + private TextField xinput; + + @FXML + @FXBind("text=${bean.y}") + private TextField yinput; + + @FXML + private Button xSub; + + @FXML + private Button xAdd; + + @FXML + private Button ySub; + + @FXML + private Button yAdd; + @FXML + public void addX(){ + double x = bean.getX() + 5 ; + bean.setX(x); + System.out.println("? ? " + bean); + } + @FXML + public void subX(){ + double x = bean.getX() - 5 ; + bean.setX(x); + } + @FXML + public void addY(){ + double y = bean.getY() + 5 ; + bean.setY(y); + } + @FXML + public void subY(){ + double y = bean.getY() - 5 ; + bean.setY(y); + } +} diff --git a/src/main/java/cn/edu/scau/biubiusuisui/example/springExpressionDemo/SpringExpressionDemoController.java b/src/main/java/cn/edu/scau/biubiusuisui/example/springExpressionDemo/SpringExpressionDemoController.java index d1f8776..7c4e583 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/example/springExpressionDemo/SpringExpressionDemoController.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/example/springExpressionDemo/SpringExpressionDemoController.java @@ -25,6 +25,10 @@ import org.springframework.stereotype.Component; @FXWindow(title = "hello", resizable = true, style = StageStyle.UNDECORATED,draggable = true) public class SpringExpressionDemoController extends FXBaseController { + + + + @FXData @Autowired @FXBind( diff --git a/src/main/java/cn/edu/scau/biubiusuisui/factory/FXEntityFactory.java b/src/main/java/cn/edu/scau/biubiusuisui/factory/FXEntityFactory.java index f7d2031..0fb2ac1 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/factory/FXEntityFactory.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/factory/FXEntityFactory.java @@ -100,16 +100,18 @@ public class FXEntityFactory { private static Property getFieldProperty(Object object,Field field) throws IllegalAccessException { Class type = field.getType(); Object value = field.get(object); + Property property = null; - if(Boolean.class.equals(type)){ + + if(Boolean.class.equals(type) || boolean.class.equals(type)){ property = new SimpleBooleanProperty((Boolean) value); - }else if(Double.class.equals(type)){ + }else if(Double.class.equals(type)||double.class.equals(type)){ property = new SimpleDoubleProperty((Double) value); - }else if (Float.class.equals(type)){ + }else if (Float.class.equals(type) || float.class.equals(type)){ property = new SimpleFloatProperty((Float) value); - }else if(Integer.class.equals(type)){ + }else if(Integer.class.equals(type) || int.class.equals(type)){ property = new SimpleIntegerProperty((Integer) value); - }else if(Long.class.equals(type)){ + }else if(Long.class.equals(type) || long.class.equals(property)){ property = new SimpleLongProperty((Long) value); }else if(String.class.equals(type)){ property = new SimpleStringProperty((String) value); @@ -123,15 +125,15 @@ public class FXEntityFactory { private static Property getFieldDefalutProperty(Field field) throws IllegalAccessException{ Class type = field.getType(); Property property = null; - if(Boolean.class.equals(type)){ + if(Boolean.class.equals(type) || boolean.class.equals(type)){ property = new SimpleBooleanProperty(); - }else if(Double.class.equals(type)){ + }else if(Double.class.equals(type)||double.class.equals(type)){ property = new SimpleDoubleProperty(); - }else if (Float.class.equals(type)){ + }else if (Float.class.equals(type) || float.class.equals(type)){ property = new SimpleFloatProperty(); - }else if(Integer.class.equals(type)){ + }else if(Integer.class.equals(type) || int.class.equals(type)){ property = new SimpleIntegerProperty(); - }else if(Long.class.equals(type)){ + }else if(Long.class.equals(type) || long.class.equals(property)){ property = new SimpleLongProperty(); }else if(String.class.equals(type)){ property = new SimpleStringProperty(); diff --git a/src/main/java/cn/edu/scau/biubiusuisui/proxy/FXEntityProxy.java b/src/main/java/cn/edu/scau/biubiusuisui/proxy/FXEntityProxy.java index 9ba1385..6a1cb30 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/proxy/FXEntityProxy.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/proxy/FXEntityProxy.java @@ -57,15 +57,15 @@ public class FXEntityProxy implements MethodInterceptor { } Class type = fxFieldPropertyMapping.getType(); if (methodName.startsWith("set")) { - if(Boolean.class.equals(type)){ + if(Boolean.class.equals(type) || boolean.class.equals(type)){ ((SimpleBooleanProperty)property).set((Boolean)objects[0]); - }else if(Double.class.equals(type)){ + }else if(Double.class.equals(type)||double.class.equals(type)){ ((SimpleDoubleProperty)property).set((Double)objects[0]); - }else if (Float.class.equals(type)){ + }else if (Float.class.equals(type) || float.class.equals(type)){ ((SimpleFloatProperty)property).set((Float) objects[0]); - }else if(Integer.class.equals(type)){ + }else if(Integer.class.equals(type) || int.class.equals(type)){ ((SimpleIntegerProperty)property).set((Integer) objects[0]); - }else if(Long.class.equals(type)){ + }else if(Long.class.equals(type) ||long.class.equals(type)){ ((SimpleLongProperty)property).set((Long)objects[0]); }else if(String.class.equals(type)){ ((SimpleStringProperty)property).set((String)objects[0]); diff --git a/src/main/resources/moveDemo.fxml b/src/main/resources/moveDemo.fxml new file mode 100644 index 0000000..82eb6c1 --- /dev/null +++ b/src/main/resources/moveDemo.fxml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + +