📜  JavaFX |弹出类

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

JavaFX |弹出类

Popup 类是 JavaFX 的一部分。 Popup 类创建一个没有内容、空填充并且是透明的弹出窗口。 Popup 类用于显示通知、按钮或下拉菜单等。弹出窗口没有任何装饰。它本质上是一个没有装饰的特殊场景/窗口。

类的构造函数:

  • Popup() : 创建一个 Popup 类的对象。

常用方法:

MethodsExplanation
getContent()The ObservableList of Nodes to be rendered on this Popup.
setAutoHide(boolean v)Sets the value of auto hide to the specified boolean value.
isShowing()Returns whether the popup is visible or not.

下面的程序说明了 Popup 类的使用:

  1. 用于创建弹出窗口并将其添加到舞台的Java程序:在此程序中,我们创建一个名为popup的弹出窗口。弹出窗口包含一个名为label的标签。我们还创建了一个名为button的 Button 并向其添加事件处理程序,然后如果它被隐藏则显示弹出窗口,如果它已经可见则隐藏它。按钮添加到TilePane,TilePane添加到场景,场景添加到舞台。调用 show函数来显示结果。标签的背景颜色使用setStyle()函数设置,标签大小使用setMinHeight()setMinWidth()函数设置。 hide()show()函数用于隐藏或显示弹出窗口。
    // Java program to create a popup and 
    // add it to the stage
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.layout.*;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.control.Label;
    import javafx.stage.Stage;
    import javafx.stage.Popup;
       
    public class Popup_1 extends Application {
       
        // launch the application
        public void start(Stage stage)
        {
       
            // set title for the stage
            stage.setTitle("Creating popup");
       
            // create a button
            Button button = new Button("button");
       
            // create a tile pane
            TilePane tilepane = new TilePane();
       
            // create a label
            Label label = new Label("This is a Popup");
       
            // create a popup
            Popup popup = new Popup();
       
            // set background
            label.setStyle(" -fx-background-color: white;");
       
            // add the label
            popup.getContent().add(label);
       
            // set size of label
            label.setMinWidth(80);
            label.setMinHeight(50);
       
            // action event
            EventHandler event = 
            new EventHandler() {
       
                public void handle(ActionEvent e)
                {
                    if (!popup.isShowing())
                        popup.show(stage);
                    else
                        popup.hide();
                }
            };
       
            // when button is pressed
            button.setOnAction(event);
       
            // add button
            tilepane.getChildren().add(button);
       
            // create a scene
            Scene scene = new Scene(tilepane, 200, 200);
       
            // set the scene
            stage.setScene(scene);
       
            stage.show();
        }
       
        // Main Method
        public static void main(String args[])
        {
       
            // launch the application
            launch(args);
        }
    }
    

    输出:

  2. Java程序使用setAutoHide()函数创建一个弹出窗口并将其添加到舞台并在它失去焦点时自动隐藏弹出窗口:在这个程序中,我们创建一个名为popup的弹出窗口。弹出窗口包含一个名为label的标签。我们还创建了一个名为button的 Button 并向其添加事件处理程序,以显示隐藏的弹出窗口。按钮添加到TilePane,TilePane添加到场景,场景添加到舞台。调用 show函数来显示结果。弹出框失去焦点时会自动隐藏,我们将使用setAutoHide()函数将此功能应用于弹出框。标签的背景颜色使用setStyle()函数设置,标签大小使用setMinHeight()设置, setMinWidth()函数。 hide() 和show()函数用于隐藏或显示弹出窗口。
    // Java Program to create a popup and add
    // it to the stage and make the popup hide
    // automatically when it loses focus using
    // the setAutoHide() function
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.layout.*;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.control.Label;
    import javafx.stage.Stage;
    import javafx.stage.Popup;
      
    public class popup_2 extends Application {
      
        // launch the application
        public void start(Stage stage)
        {
      
            // set title for the stage
            stage.setTitle("Creating Popup");
      
            // create a button
            Button button = new Button("popup");
      
            // create a tile pane
            TilePane tilepane = new TilePane();
      
            // create a label
            Label label = new Label("This is a Popup");
      
            // create a popup
            Popup popup = new Popup();
      
            // set background
            label.setStyle(" -fx-background-color: white;");
      
            // add the label
            popup.getContent().add(label);
      
            // set size of label
            label.setMinWidth(80);
            label.setMinHeight(50);
      
            // set auto hide
            popup.setAutoHide(true);
      
            // action event
            EventHandler event = 
            new EventHandler() {
                public void handle(ActionEvent e)
                {
                    if (!popup.isShowing())
                        popup.show(stage);
                }
            };
      
            // when button is pressed
            button.setOnAction(event);
      
            // add button
            tilepane.getChildren().add(button);
      
            // create a scene
            Scene scene = new Scene(tilepane, 200, 200);
      
            // set the scene
            stage.setScene(scene);
      
            stage.show();
        }
      
        // Main Method
        public static void main(String args[])
        {
      
            // launch the application
            launch(args);
        }
    }
    

    输出:

注意:上述程序可能无法在在线 IDE 中运行。请使用离线编译器。

参考: https://docs.oracle.com/javase/8/javafx/api/javafx/stage/Popup.html