• JavaFx全屏时钟显示


    闲来无事做些小玩意

    做这个之前先阅读SpringBoot整合JavaFx

    showTime.fxml:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <?import javafx.scene.text.*?>
    <?import javafx.geometry.*?>
    <?import javafx.scene.control.*?>
    <?import java.lang.*?>
    <?import javafx.scene.layout.*?>
    
    
    <?import javafx.scene.image.ImageView?>
    <BorderPane minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0"
                xmlns="http://javafx.com/javafx/8"
                xmlns:fx="http://javafx.com/fxml/1"
                fx:controller="com.maxinhai.diary.controller.ShowTimeController">
       <!--ImageView被遮挡应该将ImageView放在最顶层容器-->
       <ImageView fx:id="imageView">
          <image>
          </image>
       </ImageView>
       <center>
          <Label fx:id="message"
                 alignment="CENTER"
                 contentDisplay="CENTER"
                 prefHeight="400.0" prefWidth="601.0"
                 opacity="0.5"
                 text="" textAlignment="CENTER"
                 BorderPane.alignment="CENTER"
          >
             <BorderPane.margin>
                <Insets />
             </BorderPane.margin>
             <font>
                <Font name="System Bold Italic" size="96.0" />
             </font>
             <opaqueInsets>
                <Insets />
             </opaqueInsets>
          </Label>
       </center>
    </BorderPane>

    ShowTimeFxmlView:

    import de.felixroske.jfxsupport.AbstractFxmlView;
    import de.felixroske.jfxsupport.FXMLView;
    
    @FXMLView(value = "/fxml/showTime.fxml",title = "showTime",bundle = "i18n.index",encoding = "utf-8")
    public class ShowTimeFxmlView extends AbstractFxmlView {
    }

    ShowTimeController:

    import com.maxinhai.diary.DiaryApplication;
    import de.felixroske.jfxsupport.FXMLController;
    import javafx.application.Platform;
    import javafx.beans.value.ChangeListener;
    import javafx.beans.value.ObservableValue;
    import javafx.fxml.FXML;
    import javafx.fxml.Initializable;
    import javafx.scene.control.Label;
    import javafx.scene.image.Image;
    import javafx.scene.image.ImageView;
    
    import java.net.URL;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.ResourceBundle;
    
    /**
     * 时钟显示
     */
    @FXMLController
    public class ShowTimeController implements Initializable {
    
        @FXML
        public Label message;
        @FXML
        public ImageView imageView;
    
        @FXML
        public void setContent(String content) {
            message.setText(content);
        }
    
        @Override
        public void initialize(URL location, ResourceBundle resources) {
            Image image = new Image("image/mv.jpg");
            imageView.setImage(image);
            imageView.setDisable(false);
    
            // 使图片宽度、高度随窗口变化而变化
            DiaryApplication.getScene().heightProperty().addListener(new ChangeListener<Number>() {
                @Override
                public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
                    imageView.setFitHeight(newValue.doubleValue());
                }
            });
            DiaryApplication.getScene().widthProperty().addListener(new ChangeListener<Number>() {
                @Override
                public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
                    imageView.setFitWidth(newValue.doubleValue());
                }
            });
            // 使Label大小随窗口大小变化而变化
            DiaryApplication.getStage().widthProperty().addListener(new ChangeListener<Number>() {
                @Override
                public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
                    message.setPrefWidth(newValue.doubleValue());
                }
            });
            DiaryApplication.getStage().heightProperty().addListener(new ChangeListener<Number>() {
                @Override
                public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
                    message.setPrefHeight(newValue.doubleValue());
                }
            });
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd
    HH:mm:ss");
            setContent(sdf.format(new Date()));
    // 创建一个线程,每隔1秒更新一下Label里的内容
    new Thread(()-> { while (true) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } // 更新UI线程 Platform.runLater(()-> { message.setText(sdf.format(new Date())); }); } }).start(); } }

    图片存放位置:

    实现效果:

  • 相关阅读:
    Leetcode 33.搜索旋转排序数组
    Leetcode 32.最长有效括号
    Leetcode 31.下一个排列
    Leetcode 30.与所有单词相关联的子串
    Leetcode 25.k个一组翻转链表
    Leetcode 24.两两交换链表中的节点
    做数据分析需要“搞”人?
    求职互联网数据分析,如何准备行业知识?
    如何利用Social Listening从社会化媒体中“提炼”有价值的信息?
    运营实操|如何利用微信后台数据优化微信运营
  • 原文地址:https://www.cnblogs.com/mxh-java/p/14319282.html
Copyright © 2020-2023  润新知