JavaFX로 초시계 만들기.

7273 단어 JavaFXJava

개요


JavaFX로 간단한 초시계를 만들다.

캡처


부팅 후



Start



Start 키를 눌러 카운트를 시작합니다.

위로 계수하면 Start가 Stop으로 변경되고 버튼을 누르면 위로 계수가 중지됩니다.

Reset 키를 눌러 카운트를 지웁니다.이상은 평범한 초시계입니다.

해설


Component 호스트


Buton을 계승하고 실현했습니다.Component 자체를 클릭하면 계수 제어를 할 수 있습니다.

상태 제어


초시계의 상태를 active 이boolean 값으로 제어합니다.

Timeline


JavaFX는 다른 스레드에서 특정 처리를 정기적으로 수행하는 메커니즘으로 Timeline 이런 종류를 준비했다.이번에는 100ms마다 업데이트를 계산하고 표시합니다.
Timeline 초기화
            timeline = new Timeline(
                    new KeyFrame(Duration.millis(100),
                    e2 -> {
                        if (!active) {
                            return;
                        }
                        final Duration duration = ((KeyFrame) e2.getSource()).getTime();
                        time = time.add(duration);
                        timeSeconds.set(makeText(time));
                    }
                )
            );

나타내다


Duration은 더블을 통해 수치를 얻을 수 있기 때문에 정수치로 조정해야 한다.이번에 플로우를 사용한 것은 꼬리를 버리지 않으면 시계 스타일이 드러나지 않기 때문이다.평론에서 배우 라인업이 매우 좋다는 지적을 받았다.@shiracamus 감사합니다.
makeText
    private String makeText(final Duration duration) {
        return String.format("%02d:%02d",
                (long) (duration.toMinutes() % 60.0),
                (long) (duration.toSeconds() % 60.0)
                )
                + (active ? "▶" : "■");
    }

Button


스톱워치 호스트만 사용하면 조작이 불편하기 때문에 두 개의 버튼이 추가된다.

start


그냥.초시계의 상태에 따라 텍스트를 바꿉니다.
start
        final Button start = new Button("Start");
        start.setOnAction(eve -> {
            start.setText(stopwatch.isActive() ? "Start" : "Stop");
            stopwatch.start();
        });

reset


카운트 수를 재설정합니다.
reset
        final Button reset = new Button("Reset");
        reset.setOnAction(eve -> {stopwatch.reset();});

성과물


GitHub Repository

참고 자료

  • javafx-stopwatch-timer
  • javafx-how-can-i-format-a-double-property-for-binding
  • 좋은 웹페이지 즐겨찾기