迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > 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 设置背景。

上一篇:JavaFX 与 Swing

下一篇:Java 清除文本字段

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

本文地址:

相关文章

Java 中的 JFileChooser 示例

发布时间:2023/09/22 浏览次数:67 分类:Java

本文展示了 Java 中的 jfilechooser 示例。JFileChooser 为我们提供了一个窗口或提示,我们可以使用它来选择文件或文件夹。它是 Swing 包的一部分。

在 Java 中使用 setFont

发布时间:2023/09/22 浏览次数:96 分类:Java

本文介绍了在 Java 中使用 setFont 方法的方法。在本文中,我们将学习如何使用从 javax.swing.JFrame 类中的 java.awt.Container 继承的 setFont() 方法。

在 Swing 中将 JLabel 居中

发布时间:2023/09/22 浏览次数:143 分类:Java

本文介绍了如何在 Java Swing 中使 JLabel 居中。本文介绍了如何在 Java Swing 中使 JLabel 居中。在 Swing 中将 JLabel 居中

在 Java Swing 中更改 JLabel 文本

发布时间:2023/09/22 浏览次数:133 分类:Java

本文介绍了如何在 Java swing 中更改 JLabel 文本。本文介绍了如何在 Java swing 中更改 JLabel 文本。在 Java Swing 中更改 JLabel 文本

JavaFX 与 Swing

发布时间:2023/09/22 浏览次数:164 分类:Java

本文介绍了 JavaFX 和 Swing 之间的区别。JavaFX 是一个 Web 平台,可帮助开发人员为 Web、移动和桌面应用程序开发现代用户界面。

JavaFX 文本旋转

发布时间:2023/09/21 浏览次数:97 分类:Java

本介绍了如何在 JavaFX 中旋转文本。可以使用 JavaFX.scene.text.Text 类创建文本节点,并在 JavaFX 中使用 setRotate() 来旋转文本。本文介绍了如何在 JavaFX 中旋转文本。

JavaFX 区域与窗格

发布时间:2023/09/21 浏览次数:94 分类:Java

本文介绍了 JavaFX 中区域和窗格之间的区别。Region 和 Pane 用于将可调整大小的子节点调整到它们的首选大小,而不是重新定位它们。本文介绍了 JavaFX 中 Region 和 Pane 之间的区别。

JavaFX 媒体播放器

发布时间:2023/09/21 浏览次数:115 分类:Java

本文演示了 JavaFX 媒体播放器的正确使用,使用 JavaFX 播放媒体文件。在本文中,我们将学习如何使用 JavaFX 在 Java 中制作媒体播放器。为此,我们将使用内置的 JavaFX 并手动进行设置。

JavaFX 方形按钮

发布时间:2023/09/21 浏览次数:126 分类:Java

本文介绍如何在 JavaFX 中创建方形按钮。可以通过扩展 Java 中的 ToolBar 类来创建方形按钮。本文介绍了如何在 JavaFX 中创建方形按钮。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便