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(); } }

图片存放位置:

实现效果:

原文地址:https://www.cnblogs.com/mxh-java/p/14319282.html