没有合适的资源?快使用搜索试试~ 我知道了~
Java程序实现万年历,扫雷游戏
资源推荐
资源详情
资源评论
JavaSE01 Day02
1. 万年历工具
2. 扫雷游戏——完成Field类及Minesfield类的设计及除getAround方法外的编写
1 万年历工具
1.1 问题
使用Java的日期API完成万年历的制作。系统交互界面如图-14所示,点击“《”或是“》”界
面会显示上一月和下一月的日历。
图-14
1.2 方案
新建PerpetualCalendar类表示日历;新建CalendarFrame类表示日历窗口类,这两个类是相
互依赖的关系。如图-15所示:
图-15
在PerpetualCalendar类中定义属性calendar,表示当前日历的信息:
在PerpetualCalendar类中定义incMonth方法,更新成下一个月的日历信息:
在PerpetualCalendar类中添加decMonth方法, 更新成上一个月的日历信息
1.3 实现
新建PerpetualCalendar类,在类中添加需要的属性,代码如下所示:
给PerpetualCalendar添加构造方法,初始化日期界面,代码如下所示:
在PerpetualCalendar类中添加incMonth方法:
01. private Calendar calendar = Calendar.getInstance();
01. public void incMonth() {
02. //在当前月基础上加1
03. calendar.add(Calendar.MONTH, 1);
04. }
01. public void decMonth() {
02. //在当前月基础上加-1
03. calendar.add(Calendar.MONTH, -1);
04. }
01. public class PerpetualCalendar {
02. private CalendarFrame view;
03. private Calendar calendar = Calendar.getInstance();
04. }
01. public PerpetualCalendar() {
02. view = new CalendarFrame(this);
03. }
在PerpetualCalendar类中添加decMonth方法:
在PerpetualCalendar类中添加show方法,显示日历窗口:
在PerpetualCalendar类中添加main方法:
新建CalendarFrame类,该类继承自JFrame:
01. public void incMonth() {
02. calendar.add(Calendar.MONTH, 1);
03. }
01. public void decMonth() {
02. calendar.add(Calendar.MONTH, -1);
03. }
01. public void show() {
02. view.setVisible(true);
03. }
01. public static void main(String[] args) throws Exception {
02. for (LookAndFeelInfo info :
03. UIManager.getInstalledLookAndFeels()) {
04. if ("Nimbus".equals(info.getName())) {
05. UIManager.setLookAndFeel(info.getClassName());
06. break;
07. }
08. }
09. PerpetualCalendar calendar = new PerpetualCalendar();
10. calendar.show();
11. }
01. public class CalendarFrame extends JFrame {}
在CalendarFrame类中添加下列属性:
在CalendarFrame类中添加setYearAndMonth方法,为年和月的Label设置信息:
在CalendarFrame类中添加setYearAndMonth方法,设置星期和日的显示以及显示的样式:
01. private PerpetualCalendar calendar;//日历类对象
02. private JLabel yearAndMonth;//显示年月的Label
03. private JLabel monthInc;//显示上一月(<<)的Lable
04. private JLabel monthDec;//显示下一月(>>)的Label
05. //表示星期几的Label数组
06. private JLabel[] weeks = { new JLabel("日"),
07. new JLabel("一"),
08. new JLabel("二"),
09. new JLabel("三"),
10. new JLabel("四"),
11. new JLabel("五"),
12. new JLabel("六"), };
13. //表示天的Label数组
14. private JLabel[] days = new JLabel[42];
01. public void setYearAndMonth(String yearAndMonth) {
02. this.yearAndMonth.setText(yearAndMonth);
03. }
01. public void setCalendar(int begin, int maxDay, int currentDay)
02. {
03. for (int i = 0; i < days.length; i++) {
04. days[i].setText("");
05. days[i].setForeground(Color.BLACK);
06. }
07. for (int i = 1; i <= maxDay; i++) {
08. String dateStr = i <= 9 ? " " + i : "" + i;
09. days[begin + i - 2].setText(dateStr);
在CalendarFrame类中添加构造方法:
在CalendarFrame类中添加init方法:
10. //当前天如果和日历上某天相同
11. if (currentDay == i) {
12. //把当前天设置成红色背景显示
13. days[begin + i - 2].setForeground(Color.RED);
14. }
15. }
16. }
01. public CalendarFrame(PerpetualCalendar calendar) {
02. this.calendar = calendar;
03. setTitle("PerpetualCalendar");
04. setSize(400, 350);
05.
06. init();
07.
08. Dimension d =
09. Toolkit.getDefaultToolkit().getScreenSize();
10. setLocation((d.width - getWidth()) / 2,
11. (d.height - getHeight()) / 2);
12. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
13. setResizable(false);
14. }
01. private void init() {
02. Container contentPane = getContentPane();
03. contentPane.setLayout(null);
04. //为显示星期的区域设置信息
05. for (int i = 0; i < weeks.length; i++) {
06. weeks[i].setBounds(40 + i * 50, 50, 50, 30);
07. contentPane.add(weeks[i]);
08. }
09. //为显示天的区域设置信息
剩余36页未读,继续阅读
资源评论
java界的小趴菜
- 粉丝: 28
- 资源: 19
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功