总结常用的Javafx功能及用法
控件的绑定和监听
在主线程
这里是让控件(Lable,Circle…)和页面大小做一个绑定
1.创建一个圆
Circle circle = new Circle();
circle.setCenterX(250);
circle.setCenterY(250);
circle.setRadius(100);
circle.setStroke(Color.BLACK);
circle.setFill(Color.WHITE);
2.坐标绑定
让圆一直显示在页面中间,也就是让圆的中心坐标属性和scence的长宽做一个绑定
//让圆的中心坐标等于scene长度和宽度的一半
circle.centerXProperty().bind(scene.widthProperty().divide(2));
circle.centerYProperty().bind(scene.heightProperty().divide(2));
当我们缩小界面的时候,可以保证圆始终在页面的正中间
3.监听器
我们也可以尝试用监听器对stage进行监听,每当页面大小被更改,则内部对圆的坐标进行更改,完成同样的效果。
//对窗口的宽度属性加上一个监听器
//添加一个ChangeListener,每当ObservalEvalue的值发生变化时,就会通知它。
stage.widthProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
//一旦窗口变化,这里做一个输出
System.out.println("窗口宽度发生变化"+newValue);
circle.setCenterX((Double) newValue/2);
}
});
//对窗口高度属性加上监听器
stage.heightProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
circle.setCenterY((Double) newValue/2);
}
});
事件驱动编程
什么是事件驱动
点击一个按键,点击鼠标,拖拽鼠标,点击按钮,电脑执行了(#¥……@#¥)操作,这样一个过程叫事件驱动。
创建一个点击移动事件
这里举例点击按钮,让label实现向下移动20
1.创建Label和Button
Label label = new Label("hello world");
Button button = new Button("移动label");
label.setLayoutX(200);
label.setLayoutY(50);
button.setLayoutX(200);
button.setLayoutY(250);
2.添加场景布局
AnchorPane root = new AnchorPane();
root.getChildren().addAll(label,button);
Scene scene = new Scene(root,500,500);
stage.setTitle("移动事件");
stage.getIcons().add(new Image("com/yu/abc/1.jpg"));
stage.setScene(scene);
stage.