迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

在 JavaFX 中添加背景图像

作者:迹忆客 最近更新:2023/09/17 浏览次数:

本文介绍如何在 JavaFX 应用程序中添加背景图像。你还可以按照我们包含的示例代码来帮助你理解该主题。

基本的 JavaFX 应用程序包含一个初级阶段、一个场景和各个节点。场景以树的形式组织根,这棵树的根被称为根节点

我们的类必须扩展 javafx.applicationApplication 类以创建 JavaFX 应用程序。然后,我们需要覆盖 start() 方法。

在这里,我们将向你展示如何将图像添加到 JavaFX 应用程序的背景。有两种方法可以执行此过程:使用 CSS 和使用 BackgroundImage 类。


使用 CSS 添加 JavaFX 背景图像

CSS 是 Cascading Style Sheets 的缩写,用于设计网页样式。此外,CSS 还可用于设置 JavaFX 应用程序的样式。我们将使用以下 CSS 规则来设置和设置背景图像的样式。你可以根据需要添加更多规则。

-fx-background-image: url('image-url');
-fx-background-repeat: no-repeat; 
-fx-background-size: 500 500; 
-fx-background-position: center center;

我们可以在根节点上的 setStyle() 方法的帮助下使用内联 CSS 规则。如果我们只想添加一些规则,内联 CSS 非常棒。完整的 JavaFX 代码如下所示。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.*;
import javafx.stage.Stage;
public class Main extends Application
{
    @Override
    public void start(Stage primaryStage)
    {
        StackPane root = new StackPane();
        Scene scene = new Scene(root, 650, 650);
        root.setStyle("-fx-background-image:                                                url('https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/ed5569e8-c0dd-458c-8450-cde6300093bd/File/a5023b0f0fb67f59176a0499af9021ed/java_horz_clr.png'); -fx-background-repeat: no-repeat; -fx-background-size: 500 500; -fx-background-position: center center;");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    public static void main(String[] args)
    {
        launch(args);
    }
}

如果我们有很多规则,内联 CSS 会变得有点麻烦和难以理解。相反,我们可以创建一个单独的 CSS 文件并将这些规则添加到该文件中。CSS 文件的内容如下所示。

#stack-pane{
    -fx-background-image: url("https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/ed5569e8-c0dd-458c-8450-cde6300093bd/File/a5023b0f0fb67f59176a0499af9021ed/java_horz_clr.png");
    -fx-background-repeat: no-repeat;
    -fx-background-size: 500 500;
    -fx-background-position: center center;
}

我们在 CSS 文件中使用了 ID 选择器,因此我们必须为 JavaFX 应用程序的根设置相同的 ID。这个过程可以通过使用 setId() 属性来完成。

我们可以简单地添加对这个 CSS 文件的引用,规则将应用于我们的应用程序。我们将在应用场景中使用 getStylesheets()add() 方法来使用 CSS 文件。完整的代码如下所示。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.*;
import javafx.stage.Stage;
public class Main extends Application
{
    @Override
    public void start(Stage primaryStage)
    {
        StackPane root = new StackPane();
        root.setId("stack-pane");
        Scene scene = new Scene(root, 650, 650);
       scene.getStylesheets().add(String.valueOf(this.getClass().getResource("sample.css")));
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    public static void main(String[] args)
    {
        launch(args);
    }
}

在 Java 中使用 BackgroundImage 添加 JavaFX 背景图像

JavaFX 提供了一个 BackgroundImage 类,如果我们不想添加 CSS,这是一个方便的选项。此类的构造函数采用 Image 类对象和其他背景图像属性。此类的构造函数的签名如下所示。

BackgroundImage(Image img, BackgroundRepeat repeatXAxis, BackgroundRepeat repeatYAxis,                                      BackgroundPosition pos, BackgroundSize size)

我们将使用默认位置和大小,图像不应重复。我们需要使用 BackgroundImage 对象来创建一个 Background 类实例。最后,我们可以使用根节点上的 setBackground() 将图像设置在背景上。完整的代码如下所示。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.layout.*;
import javafx.stage.Stage;
public class Main extends Application {
    @Override
    public void start(Stage primaryStage)
    {
        StackPane root = new StackPane();
        Scene scene = new Scene(root, 650, 650);
        Image img = new Image("https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/ed5569e8-c0dd-458c-8450-cde6300093bd/File/a5023b0f0fb67f59176a0499af9021ed/java_horz_clr.png");
        BackgroundImage bImg = new BackgroundImage(img,
                                                   BackgroundRepeat.NO_REPEAT,
                                                   BackgroundRepeat.NO_REPEAT,
                                                   BackgroundPosition.DEFAULT,
                                                   BackgroundSize.DEFAULT);
        Background bGround = new Background(bImg);
        root.setBackground(bGround);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

总结

JavaFX 可能已经过时并被其他较新的技术取代,但它仍然可以用于各种目的。我们可以使用 CSS 规则在 JavaFX 应用程序中设置背景图像。我们还可以使用 setStyle() 方法将 CSS 直接应用于节点。

如果我们有更多规则,那么我们也可以使用外部 CSS 文件。JavaFX 还提供了一个 BackgroundImage 类,可以轻松地使用纯 Java 设置背景。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Pandas 追加数据到 CSV 中

发布时间:2024/04/24 浏览次数:352 分类:Python

本教程演示了如何在追加模式下使用 to_csv()向现有的 CSV 文件添加数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便