📜  JavaFX |背景类

📅  最后修改于: 2022-05-13 01:54:21.618000             🧑  作者: Mango

JavaFX |背景类

背景类是 JavaFX 的一部分。背景类设置区域的背景。每个背景由多个填充或背景图像组成,但不能为空,但可以为空。背景类是不可变的,因此您可以在许多不同的区域上自由地重用相同的背景。

类的构造函数:

  1. Background(BackgroundFill... f) : 创建一个具有指定填充的新背景对象。
  2. Background(BackgroundFill[] fills, BackgroundImage[] images) : 创建一个具有指定填充和背景图像的新背景对象。
  3. Background(BackgroundImage... i) : 使用指定的背景图像创建一个新的背景对象。
  4. Background(List fills, List images) :使用指定的填充和背景图像列表创建一个新的背景对象。

常用方法:

MethodExplanation
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 类的使用:

  1. 为容器背景设置填充的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);
        }
    }
    

    输出:

  2. 将图像添加到容器背景的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