Display a message on the screen

前端 未结 3 530
说谎
说谎 2021-01-17 08:48

I would like to display a message onto the screen upon the button press. The message should not have any window and should be displayed at the center of the screen over any

3条回答
  •  梦谈多话
    2021-01-17 09:23

    This is a tough question to answer because it doesn't really show what you've tried to do, but I will attempt to put my comment suggestion to light and show you a simple example that might be closer to what you want.

    Create a simple FXML file (for JavaFX) that defines a pane with a label on it. Give the label an ID and assign a controller to it.

    Sample file (TestDialog.fxml), defining a simple pane with a label:

    
    
    
    
    
    
    
      
        
      
    
    

    In your controller class, define a function that will allow you to close the pane. You may or may not want more, depending on your needs.

    import javafx.fxml.FXML;
    import javafx.fxml.Initializable;
    import javafx.scene.control.Label;
    import javafx.stage.Stage;
    
    import java.net.URL;
    import java.util.ResourceBundle;
    public class MyController implements Initializable {
        @FXML
        private Label textLabel;
    
        @Override
        public void initialize(URL url, ResourceBundle resourceBundle) {
    
        }
    
        public void close() {
            ((Stage)textLabel.getScene().getWindow()).close();
        }
    }
    

    Then, in your main code, display the window. This example opens it as a top-level, but you can use it as a child stage too.

    import javafx.application.Application;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.stage.Stage;
    import javafx.stage.StageStyle;
    
    public class Main extends Application {
    
        @Override
        public void start(Stage stage) throws Exception {
            FXMLLoader myLoader = new FXMLLoader(getClass().getResource("TestDialog.fxml"));
            Parent root = (Parent)myLoader.load();
            Scene scene = new Scene(root);
            stage.setScene(scene);
            stage.initStyle(StageStyle.UNDECORATED);  // this style sets the stage to have no border or buttons/title bar
            stage.setResizable(false);
            stage.show();
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    }
    

    The result looks like this

    Dialog with no borders

    *Note that this code, as written, does not provide a way to close the dialog. That's an exercise left up to you. This was simply an example used to show you the effect.

提交回复
热议问题