用java语言写出代码
时间: 2024-03-14 09:43:56 浏览: 61
好的,下面是一个简单的Java示例代码,实现了显示当月日历和当前日期的功能:
```java
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class CalendarDemo extends JFrame {
private JLabel dateLabel;
private JPanel calendarPanel;
public CalendarDemo() {
setTitle("Calendar Demo");
setSize(400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建日期标签
dateLabel = new JLabel("", JLabel.CENTER);
updateDate();
// 创建日历面板
calendarPanel = new JPanel(new GridLayout(0, 7));
updateCalendar();
// 添加组件到窗口
add(dateLabel, BorderLayout.NORTH);
add(calendarPanel, BorderLayout.CENTER);
// 显示窗口
setVisible(true);
}
private void updateDate() {
// 获取当前日期
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
// 格式化日期字符串
String dateString = String.format("%tF %tT", date, date);
// 更新日期标签
dateLabel.setText(dateString);
}
private void updateCalendar() {
// 获取当月的日历
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
calendar.set(year, month, 1);
int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
// 清空日历面板
calendarPanel.removeAll();
// 添加星期标签
String[] weekdays = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
for (String weekday : weekdays) {
JLabel label = new JLabel(weekday, JLabel.CENTER);
calendarPanel.add(label);
}
// 添加日期标签
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
for (int i = 0; i < dayOfWeek; i++) {
calendarPanel.add(new JLabel(""));
}
for (int i = 1; i <= daysInMonth; i++) {
JLabel label = new JLabel(Integer.toString(i), JLabel.CENTER);
calendarPanel.add(label);
}
// 刷新日历面板
calendarPanel.revalidate();
calendarPanel.repaint();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new CalendarDemo();
}
});
}
}
```
这个示例代码使用了Java Swing来创建GUI界面,包含了一个日期标签和一个日历面板。在构造函数中,我们调用了`updateDate()`和`updateCalendar()`方法来初始化日期和日历的显示。
`updateDate()`方法使用了Java的日期类来获取当前日期,并将日期格式化成字符串后更新日期标签。
`updateCalendar()`方法通过Java的日期类来获取当月的日历,并添加到日历面板中。我们使用了GridLayout布局管理器来布局日历面板,其中包含了一个星期标签和日期标签。在添加日期标签时,我们需要根据当月的天数来循环添加,同时需要考虑第一天是星期几,因此需要在前面添加空的标签。
在main方法中,我们使用了SwingUtilities.invokeLater()方法来启动GUI界面。这是因为Swing的组件必须在事件分派线程(Event Dispatch Thread)上创建和更新,否则可能会导致界面无响应。
阅读全文