这是我的示例GUI草案,我只是想创建一个具有今天对应日期和日期的面板,该面板可以更改其今天计划的内容。
是否可以创建带有“今天的日期”和“今天的日期”标签的面板,该面板根据今天的日期和今天的数据更改内容?
最佳答案
这是一个简单的示例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);
}
}
今天在我的计算机上,它看起来像:
请填写我放置亚洲/东京的所需时区。
如果您需要在新的一天开始时(午夜)更新框架中的日期,请使用Sergiy Medvynskyy在a comment中建议的计时器。我正在重写
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");
就是这样。
关于java - 创建一个带有今天日期标签的面板,该面板会根据今天的数据更改内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49941143/