📅  最后修改于: 2023-12-03 15:01:36.191000             🧑  作者: Mango
JavaFX是一个用于创建富客户端应用程序的Java框架。它提供了丰富的GUI组件、多媒体支持以及动画特效,可以创建出漂亮的用户界面。下面,我们来看几个JavaFX的示例代码。
这是一个JavaFX的Hello World程序,它创建出一个简单的窗口,并在窗口中显示出"Hello World"。
public class HelloWorld extends Application {
@Override
public void start(Stage stage) {
Label label = new Label("Hello World");
Scene scene = new Scene(label, 300, 200);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
这个程序继承了JavaFX的Application类,并重写了其中的start方法,在这个方法中创建了一个Label,并将其添加到了一个大小为300x200的Scene中。然后,将这个Scene设置为了窗口的场景,最后显示出窗口。
JavaFX中可以使用CSS样式来定制UI的外观。下面这个例子展示了如何使用CSS样式来修改一个Button的样式。
public class StyledButton extends Application {
@Override
public void start(Stage stage) {
Button button = new Button("Click me");
button.getStyleClass().add("styled-button");
Scene scene = new Scene(button, 300, 200);
scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm());
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
这个程序创建了一个Button,并将其样式类设置为"styled-button",然后将一个style.css文件添加到场景中。下面是style.css的内容:
.styled-button {
-fx-background-color: #00ff00;
-fx-text-fill: #ffffff;
}
这段CSS代码将按钮的背景颜色设置为绿色,文本颜色设置为白色。
JavaFX支持显示图片,下面这个例子展示了如何加载一个图片并在窗口中显示出来。
public class ImageViewer extends Application {
@Override
public void start(Stage stage) {
ImageView imageView = new ImageView();
Image image = new Image(getClass().getResourceAsStream("image.jpg"));
imageView.setImage(image);
Scene scene = new Scene(new StackPane(imageView), 800, 600);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
这个程序创建了一个ImageView,并加载了一个名为"image.jpg"的图片。然后将这个ImageView添加到了一个StackPane中,并将这个StackPane作为场景的根节点。最后显示出窗口。
JavaFX支持多种动画特效,下面这个例子展示了如何使用TranslateTransition创建一个平移动画。
public class AnimationDemo extends Application {
@Override
public void start(Stage stage) {
Rectangle rect = new Rectangle(50, 50, 100, 100);
rect.setFill(Color.BLUE);
TranslateTransition translateTransition = new TranslateTransition(Duration.seconds(2), rect);
translateTransition.setToX(200);
translateTransition.setAutoReverse(true);
translateTransition.setCycleCount(Animation.INDEFINITE);
translateTransition.play();
Scene scene = new Scene(new StackPane(rect), 400, 400);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
这个程序创建了一个蓝色的矩形,并使用TranslateTransition将其沿着X轴平移200个单位。同时,将动画设置为自动反转并无限重复。最后将矩形添加到了一个StackPane中,并将这个StackPane作为场景的根节点。