GUI实现万年历
2016-04-19 19:30
489 查看
“`
package com.westos.javase.lesson08;
import java.awt.BorderLayout;
import java.awt.Choice;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.Panel;
import java.awt.Toolkit;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Calendar;
import java.util.Random;
public class MyCalendar extends Frame {
}
“`
package com.westos.javase.lesson08;
import java.awt.BorderLayout;
import java.awt.Choice;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.Panel;
import java.awt.Toolkit;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Calendar;
import java.util.Random;
public class MyCalendar extends Frame {
Panel pNorth = new Panel(); Panel pCenter = new Panel(); Label[] ls = new Label[42]; Label ly = new Label("年"); Label lm = new Label("月"); Choice chYear = new Choice(); Choice chMonth = new Choice(); public MyCalendar() { setTitle("我的万年历"); setSize(300, 350); //初始化菜单 initMenu(); //初始化中间日期面板 initCenter(); //初始化北部面板 initNorth(); //关闭窗口 this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { dispose(); System.exit(0); } }); } private void initCenter() { pCenter.setLayout(new GridLayout(0,7)); //标题 String[] tips = {"日","一","二","三","四","五","六"}; for (int i = 0; i < tips.length; i++) { Label lt = new Label(tips[i],Label.CENTER); lt.setFont(new Font("黑体", Font.BOLD, 14)); lt.setBackground(new Color(0x799ad1)); pCenter.add(lt); } //日期信息 Random r = new Random(); for (int i = 0; i < ls.length; i++) { ls[i] = new Label(String.valueOf(i),Label.CENTER); ls[i].setBackground(new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256))); pCenter.add(ls[i]); } add(pCenter); } /** * 北部面板 */ private void initNorth() { pNorth.setBackground(new Color(0xcaecf0)); //当前年月 Calendar cal = Calendar.getInstance(); int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH) + 1; for(int i = 1970;i <= 2050;i++) { chYear.addItem(String.valueOf(i)); } chYear.select(String.valueOf(year)); for(int i = 1;i <= 12 ;i++) { chMonth.addItem(String.valueOf(i)); } chMonth.select(String.valueOf(month)); pNorth.add(chYear); pNorth.add(ly); pNorth.add(chMonth); pNorth.add(lm); //为下拉列表添加监听 ChoiceItemListener lisn = new ChoiceItemListener(); chYear.addItemListener(lisn); chMonth.addItemListener(lisn); add(pNorth,BorderLayout.NORTH); lisn.setCalendarDispay(); //启动后就显示当月日历 } /** * 初始化菜单 */ private void initMenu() { //菜单 MenuBar mb = new MenuBar(); //菜单条 Menu m1 = new Menu("查看"); Menu m2 = new Menu("编辑"); Menu m3 = new Menu("帮助"); MenuItem mt11 = new MenuItem("文件"); MenuItem mt12 = new MenuItem("打开"); MenuItem mt13 = new MenuItem("关闭"); m1.add(mt11); m1.add(mt12); m1.add(mt13); MenuItem mt21 = new MenuItem("复制"); MenuItem mt22 = new MenuItem("粘贴"); MenuItem mt23 = new MenuItem("剪切"); m2.add(mt21); m2.add(mt22); m2.add(mt23); MenuItem mt31 = new MenuItem("主题"); MenuItem mt32 = new MenuItem("关于"); m3.add(mt31); m3.add(mt32); mb.add(m1); mb.add(m2); //mb.add(m3); m2.addSeparator(); //分隔符 m2.add(m3); //二级菜单 setMenuBar(mb); //设置窗口的菜单 } public static void main(String[] args) { MyCalendar cal = new MyCalendar(); //窗口居中 Dimension di = Toolkit.getDefaultToolkit().getScreenSize(); //获取屏幕大小 System.out.println(di.width + "*" + di.height); int x = (di.width - cal.getWidth()) / 2; int y = (di.height - cal.getHeight()) / 2; cal.setLocation(x, y); cal.setVisible(true); } /** * 下拉列表的事件监听器 * @author Administrator * */ class ChoiceItemListener implements ItemListener { @Override public void itemStateChanged(ItemEvent e) { setCalendarDispay(); } private void setCalendarDispay() { //System.out.println("change...."); //取出选择的年月 int year = Integer.parseInt(chYear.getSelectedItem()); int month = Integer.parseInt(chMonth.getSelectedItem()); //计算当月有多少天 int days = getDaysOfMonth(year, month); //当月1号是星期几 Calendar cal = Calendar.getInstance(); cal.set(year,month - 1,1); int week = cal.get(Calendar.DAY_OF_WEEK); // 日:1,一:2,六:7 //days = cal.getActualMaximum(Calendar.DATE); //获取当月的天数 //清空所有标签 for (int i = 0; i < ls.length; i++) { ls[i].setText(""); } //生成日期 int j = 1; for(int i = week - 1;i < week - 1 + days;i++ ) { //i代表是开始Label在ls数组中的索引 ls[i].setText(String.valueOf(j++)); } } /** * * @param year * @param moth * @return */ public int getDaysOfMonth(int year,int month) { int[] days = {31,28,31,30,31,30,31,31,30,31,30,31}; if(month == 2 && isLeapYear(year)) { return 29; } return days[month - 1]; } /** * 判断是否为闰年 * @param year * @return */ public boolean isLeapYear(int year) { return year % 400 == 0 || year % 4 == 0 && year % 100 != 0; } }
}
“`
相关文章推荐
- 浅学设计模式之建造者(Buildler Pattern)模式及在android中的应用
- 12rescue
- poj 2299 Ultra-QuickSort(求逆序对)
- SDUT 2603:Rescue The Princess
- ios uicollectionview滚动速度/灵敏度调节
- UIButton修改文字大小问题
- Android酷炫实用的开源框架(UI框架)
- String、StringBuffer与StringBuilder之间区别
- 5GridView FruitAdapter.java
- @PATHVARIABLE和@REQUESTPARAM的区别,@SESSIONATTRIBUTES
- 怎么给easyui中的datagrid加水平滚动条
- easyui扩展 - 编辑单个cell
- iOS UICollectionLayout 自定义
- UILabel 分段改变文字颜色和字体
- easyui扩展 - 鼠标放上后浮动提示
- easyui扩展 - 最大长度限制
- easyui扩展 - 验证两个字符串是否相同
- UIBezierPath类 笔记
- Poj 1458 Common Subsequence 最长非连续序列
- UIPageViewController_分页控制器