创建一个标签为今天标签的面板,根据今天的数据更改内容

时间:2018-04-20 11:58:37

标签: java swing date

以下是我的示例GUI草稿我只是想创建一个面板,其中包含今天相应的日期和日期,以更改今天日程安排的内容。

是否可以创建一个标签为Day and Date Today的面板,根据今天的日期和今天的数据更改内容?

1 个答案:

答案 0 :(得分:1)

这是一个简单的示例JFrame,其标签显示今天的日期:

public class FrameWithTodaysDate extends JFrame {

    JLabel todayLabel = new JLabel();

    public FrameWithTodaysDate() {
        super("Day Demo");
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        setTodaysDate();
        add(todayLabel);

        pack();
    }

    private void setTodaysDate() {
        String today = LocalDate.now(ZoneId.of("Asia/Tokyo"))
                .format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL));
        todayLabel.setText(today);
    }

    public static void main(String[] args) {
        new FrameWithTodaysDate().setVisible(true);
    }

}

今天在我的电脑上看起来像:

Screenshot

请填写我在亚洲/东京的所需时区。

如果您需要在新的一天开始时(午夜)更新框架中的日期,让我们使用a comment中建议的Sergiy Medvynskyy定时器。我正在重写setTodaysDate

private void setTodaysDate() {
    ZonedDateTime now = ZonedDateTime.now(zone);
    LocalDate today = now.toLocalDate();
    String todayString = today.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL));
    todayLabel.setText(todayString);

    int millisUntilTomorrow = (int) ChronoUnit.MILLIS.between(now,
            today.plusDays(1).atStartOfDay(zone));
    Timer nextUpdate = new Timer(millisUntilTomorrow, e -> setTodaysDate());
    nextUpdate.setRepeats(false);
    nextUpdate.start();
}

它可能看起来有点复杂,因为我考虑夏令时(DST)等:一天可能是23或25小时,它可能不会在00:00开始。

要使用方法,我们需要

    private ZoneId zone = ZoneId.of("Asia/Tokyo");

应该是它。