事件驱动主要是几个大类,其中的方法都是大同小异。
Color更易理解,就是上色,其中大多都是静态方法,颜色什么的都已经准备好了,只要通过不同方法调用就行。
Font是设置字体,字的大小,字的粗细,倾斜之类的。
Image就是设置图画。
package javafx;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.Dragboard;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.TransferMode;
import javafx.scene.layout.AnchorPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;
public class Main6 extends Application {
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
AnchorPane root = new AnchorPane();
Scene scene = new Scene(root,600,600);
Label label = new Label("动起来!");
label.setLayoutX(360);
label.setLayoutY(200);
//font设置字体
label.setFont(Font.font("华文隶书", FontWeight.BOLD,30));
Button button = new Button("向上走起");
root.getChildren().addAll(label,button);
button.setOnAction(new EventHandler<ActionEvent>() { //事件处理者
@Override
public void handle(ActionEvent event) {
label.setLayoutY(label.getLayoutY() - 10);
}
});
//键盘事件KeyReleased为键盘抬起的时候,KeyPressed为键盘按下的时候,KeyTyped为键盘按下又抬起的时候
//键盘事件有两种放法进行,一种是用new一个EventHandler对象,通过单个handle方法完成
//也可以通过event ->的形式完成
scene.setOnKeyReleased(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
}
});
scene.setOnKeyReleased(event -> {
KeyCode keyCode = event.getCode();
if (keyCode.equals(KeyCode.DOWN)) {
label.setLayoutY(label.getLayoutY() + 5);
}
});
TextField textField = new TextField(); //TextField为文本框,可以输入文字
textField.setLayoutX(100);
textField.setLayoutY(100);
textField.setOnDragOver(event -> { //对文本拖拽时
event.acceptTransferModes(TransferMode.ANY); //接受传输方式
});
textField.setOnDragDropped(event -> { //文本拖拽后
Dragboard dragboard = event.getDragboard();
if(dragboard.hasFiles()) {
String path = dragboard.getFiles().get(0).getAbsolutePath();
textField.setText(path);
} //设置后将文本拖拽到那里就可以获得地址
});
//Color学习
Circle circle = new Circle(); //Circle是圆
circle.setCenterX(123);
circle.setCenterY(123);
circle.setRadius(88); //Radius为半径
circle.setFill(Color.rgb(250,250,0)); //三个位置输入不同的数字相当于就是调色一样
//还有一个同名的方法有四个参数,可以设置透明度
circle.setStroke(Color.YELLOW);
circle.setStrokeWidth(12);
// ImageView imageView = new ImageView();
// Image image = new Image("image/idea3.WEBP");
// imageView.setImage(image);
// root.getChildren().add(imageView);
root.getChildren().add(circle);
root.getChildren().add(textField);
primaryStage.setScene(scene);
primaryStage.show();
}
}
运行结果:点击向上的按钮那几个字就会向上(我按空格也会),按键盘上的向下键,就会向下移动。