JavaFX |背景类
背景类是 JavaFX 的一部分。背景类设置区域的背景。每个背景由多个填充或背景图像组成,但不能为空,但可以为空。背景类是不可变的,因此您可以在许多不同的区域上自由地重用相同的背景。
类的构造函数:
- Background(BackgroundFill... f) : 创建一个具有指定填充的新背景对象。
- Background(BackgroundFill[] fills, BackgroundImage[] images) : 创建一个具有指定填充和背景图像的新背景对象。
- Background(BackgroundImage... i) : 使用指定的背景图像创建一个新的背景对象。
- Background(List fills, List images) :使用指定的填充和背景图像列表创建一个新的背景对象。
常用方法:
Method | Explanation |
---|---|
getFills() | Returns the list of all the fills of a background. |
getImages() | Returns the list of all the background images of a background. |
getOutsets() | Returns outsets of this Background. |
isEmpty() | Returns whether the background is empty. |
isFillPercentageBased() | Returns whether the fill of this Background is based on percentages. |
下面的程序说明了 Background 类的使用:
- 为容器背景设置填充的Java程序:在此程序中,我们将创建一个名为background的 Background,并指定 BackgroundFill 并将其添加到背景中。我们将创建一个名为hbox的 HBox、一个名为label的 Label、一个名为textfield的 TextField 和一个名为button的 Button。现在将标签、文本字段和按钮添加到 HBox。我们将使用setBackground()函数设置 hbox 的背景。现在将 HBox 的对齐设置为Pos.CENTER并使用setSpacing()方法在节点之间添加一些间距。我们将创建一个名为场景的场景并将 HBox 添加到场景中。使用setScene()函数将场景设置为舞台。我们将调用show()函数来显示结果。
// Java program to set a fill for the background // of a container import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.layout.*; import javafx.stage.Stage; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.canvas.*; import javafx.scene.web.*; import javafx.scene.layout.*; import javafx.scene.image.*; import java.io.*; import javafx.geometry.*; import javafx.scene.Group; import javafx.scene.paint.*; public class Background_2 extends Application { // launch the application public void start(Stage stage) { try { // set title for the stage stage.setTitle("creating Background"); // create a label Label label = new Label("Name : "); // create a text field TextField textfield = new TextField(); // set preferred column count textfield.setPrefColumnCount(10); // create a button Button button = new Button("OK"); // add the label, text field and button HBox hbox = new HBox(label, textfield, button); // set spacing hbox.setSpacing(10); // set alignment for the HBox hbox.setAlignment(Pos.CENTER); // create a scene Scene scene = new Scene(hbox, 280, 280); // create a background fill BackgroundFill background_fill = new BackgroundFill(Color.PINK, CornerRadii.EMPTY, Insets.EMPTY); // create Background Background background = new Background(background_fill); // set background hbox.setBackground(background); // set the scene stage.setScene(scene); stage.show(); } catch (Exception e) { System.out.println(e.getMessage()); } } // Main Method public static void main(String args[]) { // launch the application launch(args); } }
输出:
- 将图像添加到容器背景的Java程序:在此程序中,我们将使用指定的 BackgroundImage 创建一个名为background的背景,并将此图像添加到容器的背景中。使用 FileInputStream 导入图像,然后将文件转换为 Image 对象 使用此 Image 对象创建 BackgroundImage。我们将创建一个名为hbox的 HBox、一个名为label的 Label、一个名为textfield的 TextField 和一个名为button的 Button。现在将标签、文本字段和按钮添加到 HBox。使用setBackground()函数设置hbox的背景。将 HBox 的对齐设置为Pos.CENTER并使用setSpacing()方法在节点之间添加一些间距。我们将创建一个名为场景的场景并将 HBox 添加到场景中。使用setScene()函数将场景设置为舞台。最后调用show()方法显示结果。
// Java program to add an image to // the background of a container import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.layout.*; import javafx.stage.Stage; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.canvas.*; import javafx.scene.web.*; import javafx.scene.layout.*; import javafx.scene.image.*; import java.io.*; import javafx.geometry.*; import javafx.scene.Group; public class Background_1 extends Application { // launch the application public void start(Stage stage) { try { // set title for the stage stage.setTitle("creating Background"); // create a label Label label = new Label("Name : "); // create a text field TextField textfield = new TextField(); // set preferred column count textfield.setPrefColumnCount(10); // create a button Button button = new Button("OK"); // add the label, text field and button HBox hbox = new HBox(label, textfield, button); // set spacing hbox.setSpacing(10); // set alignment for the HBox hbox.setAlignment(Pos.CENTER); // create a scene Scene scene = new Scene(hbox, 280, 280); // create a input stream FileInputStream input = new FileInputStream("f:\\gfg.png"); // create a image Image image = new Image(input); // create a background image BackgroundImage backgroundimage = new BackgroundImage(image, BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, BackgroundPosition.DEFAULT, BackgroundSize.DEFAULT); // create Background Background background = new Background(backgroundimage); // set background hbox.setBackground(background); // set the scene stage.setScene(scene); stage.show(); } catch (Exception e) { System.out.println(e.getMessage()); } } // Main Method public static void main(String args[]) { // launch the application launch(args); } }
输出:
注意:上述程序可能无法在在线 IDE 中运行。请使用离线编译器。
参考: https://docs.oracle.com/javase/8/javafx/api/javafx/scene/layout/Background.html