RGB颜色对照表
RGB2
改变label颜色方法,这里同样使用了lambda表达式注册事件
red.setOnAction(event->message.setTextFill(javafx.scene.paint.Color.AQUAMARINE));
- javafx滑块控件有一个属性value,该属性会在发生改变时发起事件。
//设置滑块的value值的事件监听
Slider slider =new Slider();
slider.valueProperty().addListener(property->message.setFont(new Font(slider.getValue())));
p.getChildren().addAll(message,red,slider);
- 在javafx中,监听属性是非常常见的,例如,如果你希望当用户在文本框中输入文本时改变用户界面的某一部分,那么你应当对文本框的text属性添加一个监视器。
javafx属性
- 属性property通常对应着一个你可以读写的字段,并且属性的getter和setter方法通常只是读取和设置该字段。
- javafx除了以上两个方法之外,还有第三个方法,它可以返回一个实现了property接口的对象,可以在该property对象上添加监听器
- 对silder属性的绑定
slider.valueProperty().addListener((property,oldvalue,newvalue)->message.setFont(new Font(newvalue.doubleValue())));
- 对textarea的值进行绑定
TextArea t1=new TextArea();
h1.getChildren().add(t1);
t1.setText("1");
TextArea t2=new TextArea();
h2.getChildren().add(t2);
p.getChildren().add(h1);
p.getChildren().add(h2);
t1.textProperty().bind(t2.textProperty());//t1的值受制于t2
t1.textProperty().bindBidirectional(t2.textProperty());//双向绑定
- 或许可以使用这种绑定使目标居中
Bindings.divide(s.widthProperty(), 2);//会得到一个值,始终为场景width属性值的一半
l.layoutXProperty().bind(Bindings.divide(s.widthProperty(), 2));
- 可以使用disableproperty决定按钮是否可用
- `Bindings.greaterThanOrEqual();可以使用与property大于等于的判断
- Bindings的相关操作:
布局
- 东西南北中布局
BorderPane pane= new BorderPane();
pane.setTop(new Button("Top"));
pane.setLeft(new Button("Left"));
pane.setCenter(new Button("Center"));
pane.setRight(new Button("Right"));
pane.setBottom(new Button("Bottom"));
Scene s=new Scene(pane);
- Hbox布局 horizon
HBox box =new HBox(10);//控件之间有10个像素的间隔
box.setPadding(new Insets(10));//与边框之间的距离
- javafx中的多种布局
- 使用css加入,使形式完整
package application;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
public class demo5 extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
// TODO Auto-generated method stub
GridPane pane=new GridPane();
pane.setId("pane");
Scene scene=new Scene(pane);
scene.getStylesheets().add(getClass().getResource("scene.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[]args) {
launch(args);
}
}
css:
#pane{
-fx-padding:0.5em;
-fx-hgap:0.5em;
-fx-vgap:0.5em;
-fx-background-image:url("metal.jpg")
}
需要注意的是,一定要创建javafx project 否则会出现无法识别css的情况
- 也可以使用css类
buttons.getStyleClass().add("buttonrow");
- .buttonrow{
-fx-spacing: 0.5em;
}