사용 예제 ) 코드를 복붙 하여 실행해 보시기 바랍니다.
설명은 주석과 코드 아랫부분에 있습니다.
1. 메인 파일 예제입니다.(title 만 다르고 내용이 거의 변하지 않습니다.)
package timer;
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 primaryStage) throws Exception {
Parent root=FXMLLoader.load(getClass().getResource("root.fxml"));
Scene scene=new Scene(root);
primaryStage.setTitle("시 계");
//창크기 조절
primaryStage.setResizable(false);
primaryStage.setScene(scene);
//타이클바 숨기기
//primaryStage.initStyle(StageStyle.UNDECORATED);
primaryStage.show();
//항상위
primaryStage.setAlwaysOnTop(true);
}
public static void main(String[] args) {
launch(args);
}
}
2. root.fxml 파일 예제입니다.
그대로 복붙 하여 테스트해보시면 됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<AnchorPane prefHeight="109.0" prefWidth="791.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="timer.EHMain">
<children>
<Label fx:id="lblTime" alignment="CENTER" layoutX="-1.0" prefHeight="105.0" prefWidth="726.0" style="-fx-background-color: black; -fx-text-fill: white;" text="yyyy.MM.dd E HH:mm:ss:SSS">
<font>
<Font size="47.0" />
</font>
</Label>
<Button fx:id="btnStart" layoutX="727.0" layoutY="55.0" mnemonicParsing="false" onAction="#handleBtnStart" prefHeight="51.0" prefWidth="64.0" text="start">
<font>
<Font size="18.0" />
</font>
</Button>
<Button fx:id="btnStop" layoutX="727.0" mnemonicParsing="false" onAction="#handleBtnStop" prefHeight="58.0" prefWidth="64.0" text="stop">
<font>
<Font size="18.0" />
</font>
</Button>
</children>
</AnchorPane>
3. MainHandler.java 핸들러 파일입니다.
그대로 복붙 하여 테스트하시길 바랍니다.
package timer;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.ResourceBundle;
import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
public class MainHandler implements Initializable {
@FXML private Label lblTime;
@FXML private Button btnStart;
@FXML private Button btnStop;
private boolean stop;
@Override
public void initialize(URL location, ResourceBundle resources) {
}
public void handleBtnStart(ActionEvent e) {
stop = false;
Thread thread = new Thread() {
@Override
public void run() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd E HH:mm:ss:SSS", Locale.US);
while(!stop) {
String strTime = sdf.format(new Date());
Platform.runLater(()->{
lblTime.setText(strTime);
});
try { Thread.sleep(100); } catch (InterruptedException e) {}
}
};
};
thread.setDaemon(true);
thread.start();
}
public void handleBtnStop(ActionEvent e) {
Platform.exit();
}
}
예제를 기본으로해서
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd E HH:mm:ss:SSS", Locale.US);
이부분만 변경하면 원하는 형식의 시계를 만들수 있겠습니다.
그리고 딜레이부분을 조절해 가시면서 원하는 움직임을 만들면 되겠습니다.
try { Thread.sleep(100); } catch (InterruptedException e) {}
끝.
세상모든것들은 그자신을 위해 존재한다.
728x90
반응형
'자바' 카테고리의 다른 글
자바 특정달의 일수 구하기 [김철수홍길동] (0) | 2021.02.04 |
---|---|
자바 특정일의 요일 구하기 [김철수홍길동] (0) | 2021.02.04 |
자바fx 패스워드를 입력받고 기존창을 닫으면서 새로운 창을열때 [김철수홍길동] (0) | 2021.01.30 |
자바 자바fx 로그인화면 , 패스워드화면 , 초기처리화면 , 새창띄우기 , 화면자동닫기 [김철수홍길동] (0) | 2021.01.29 |
자바 특정일의 주차,일자 구하기 [김철수홍길동] (0) | 2021.01.23 |
댓글