當前位置:首頁 » 編程語言 » java編寫日歷

java編寫日歷

發布時間: 2022-06-30 08:26:20

『壹』 怎樣用java編寫日歷

Java編寫日歷代碼:

importjava.util.Scanner;
publicclassWan{publicstaticvoidmain(String[]args)
{
Scannername=newScanner(System.in);
System.out.print("請輸入要查詢的年份:");
intyear=name.nextInt();
System.out.print("請輸入該年的月份");
intmonth=name.nextInt();
}//累加該年至輸入的月份天數
//比如輸入2009年的3月分
//那就累加2009年的1月至
3月1號的總天數
publicvoidsumDay(intyear,intmonth)
{
intday=0;
intsumDay=0;
for(inti=1;i<=month;i++){switch(i)
{
case1:
case3:
case5:
case7:
case8:
case10:
case12:
day=31;
break;
case2:
if(year%4==0||year%400==0&&year%100!=0)
{day=29;}
else{day=28;}
break;
default:day=30;}
//最後一個月份不要累加因為我們只是要算到該月的一號就可以了
if(i<month){sumDay+=day;}}
//累加2000年到該年的一月一號天數
for(inti=2000;i<year;i++)
{if(i%4==0||i%400==0&&i%100!=0)
{sumDay+=366;}else{sumDay+=365;}}
//求該月一號為星期幾
intweek=sumDay%7+1;if(week==7){week=0;}}
publicvoidfomatDate(intweek,intday)
{
intg=0;for(inti=0;i<week;i++)
{System.out.print(" ");}
for(inti=1;i<=day;i++){System.out.print(i+" ");
g=week+i;if(g%7==0){System.out.println();}
}
}
}

『貳』 幫忙用JAVA編寫一個簡單的日歷

這是我幾年前寫的

importjava.util.ArrayList;
importjava.util.Calendar;
importjava.util.List;

publicclass${

privatestaticint[]DAYS={31,28,31,30,31,30,31,31,30,31,30,31};

publicstaticvoidmain(String[]args){

longl1=System.currentTimeMillis();
Listdata=rili(2015,1,2015,12);
longl2=System.currentTimeMillis();

for(inti=0;i<data.size();i++){
System.out.println(data.get(i));
}
System.out.println((l2-l1)+"MS");
}

privatestaticListrili(intstartYear,intstartMonth,intendYear,intendMonth){

if(startYear>endYear||(startYear==endYear&&startMonth>endMonth)){
returnnull;
}
Listdata=newArrayList();

for(intii=startYear;ii<=endYear;ii++){

intstartM=startMonth-1;
intendM=endMonth-1;

if(startYear<endYear){
if(ii==endYear){
endM=11;
}else{
startM=0;
}
}
for(inti=startM;i<=endM;i++){
data.add("-----------------------"+ii+"年"+(i+1)+"月-----------------------");
data.add("日 一 二 三 四 五 六");

intday=days(ii,i);
StringBufferbuf=newStringBuffer();
intidx=1;
while(idx<=day){
intlen=0;
if(idx==1){
Calendarc=Calendar.getInstance();
c.set(ii,i,idx);
intxingqi=c.get(Calendar.DAY_OF_WEEK);
len=getLen(xingqi);
buf.append(addBlank(len));
}
buf.append(idx++);
for(intk=len+1;k<7;k++){
if(idx>day){
break;
}
buf.append(" "+(idx++));
}
buf.append(" ");
}
data.add(buf);
}
}
returndata;
}

(intlen){
StringBufferbuf=newStringBuffer();
for(intindex=0;index<len;index++){
buf.append(" ");
}
returnbuf;
}

privatestaticintgetLen(intxingqi){
returnxingqi==Calendar.SUNDAY?0:xingqi-1;
}

publicstaticintdays(intyear,intmonth){

if(month!=1){
returnDAYS[month];
}

if((year%4==0&&year%100!=0)||year%400==0){
return29;
}
returnDAYS[month];
}
}

『叄』 java語言編寫日歷

import java.util.*;
public class calendar
{
public static void main(String[] args)
{
new calendar().makeCalendar();
}
public void makeCalendar()
{
int i;
int j;
int year = 0;
int month = 0;
int week = 0;
int totalDay = 0;

Scanner scanner = new Scanner(System.in);
Calendar ca = Calendar.getInstance();
printAsterisk();
System.out.print("歡 迎 使 用 萬 年 歷");
printAsterisk();

System.out.print("\n\n請輸入年份:");
year = scanner.nextInt();
System.out.print("\n\n請輸入月份:");
month = scanner.nextInt() ;

ca.set(year, month - 1,1);
week = ca.get(Calendar.DAY_OF_WEEK)-1;//獲取輸入月第一天是星期幾

if( month != 2)
totalDay = calculatetotalDay(year , month);
else
{
if(judgeLeap_year(year))
totalDay = calculatetotalDay(year , month) + 1;//如果是閏年,加一天
else
totalDay = calculatetotalDay(year , month);
}

System.out.println("\n\n\n星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");

for(i = 0;i < week;i++)
{
System.out.print("\t");
}
for( i = 1; i < (8 - week);i++)
System.out.print(i + "\t");

for( i = (8 - week),j = 0;i <= totalDay;i++,j++)
{
if(j % 7 == 0)
System.out.println();
System.out.print(i+"\t");
}

}
public void printAsterisk()
{
int i;
for( i = 0 ; i < 18;i++)
System.out.print("*");
}
//獲取輸入月的天數
public int calculatetotalDay(int year ,int month)
{
int result = 0;

switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: result = 31;
break;
case 4:
case 6:
case 9:
case 11:result = 30;
break;
default:result = 28;
break;
}
return result;
}
//判斷閏年
public boolean judgeLeap_year(int year)
{
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
return true;
else
return false;
}
}

『肆』 用java編寫一個2013全年日歷

下面是一個帶界面的java日歷。可以指定任意年月。默認為2013年1月
import java.awt.*;
import java.awt.event.*;
import java.util.Calendar;

import javax.swing.JOptionPane;
class CalendarBean
{
String day[];
int year=2011,month=0;
public void setYear(int year)
{ this.year=year;
}
public int getYear()
{ return year;
}
public void setMonth(int month)
{ this.month=month;
}
public int getMonth()
{ return month;
}
public String[] getCalendar()
{ String a[]=new String[42];
Calendar 日歷=Calendar.getInstance();
日歷.set(year,month-1,1);
int 星期幾=日歷.get(Calendar.DAY_OF_WEEK)-1;
int day=0;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{ day=31;
}
if(month==4||month==6||month==9||month==11)
{ day=30;
}
if(month==2)
{ if(((year%4==0)&&(year%100!=0))||(year%400==0))
{ day=29;
}
else
{ day=28;
}
}
for(int i=星期幾,n=1;i<星期幾+day;i++)
{
a[i]=String.valueOf(n) ;
n++;
}
return a;
}
}
class CalendarFrame extends Frame implements ActionListener
{
Label labelDay[]=new Label[42];
Button titleName[]=new Button[7];
String name[]={"日","一","二","三", "四","五","六"};
TextField text1,text2;Button nextMonth,previousMonth,Enter;Label lab1,lab2,lab3;
int year=2013,month=1;
CalendarBean calendar;
Label showMessage=new Label("",Label.CENTER);
public CalendarFrame()
{ Panel pCenter=new Panel();
pCenter.setLayout(new GridLayout(7,7));
for(int i=0;i<7;i++)
{ titleName[i]=new Button(name[i]);
pCenter.add(titleName[i]);
}
for(int i=0;i<42;i++)
{
labelDay[i]=new Label("",Label.CENTER);
pCenter.add(labelDay[i]);
}
calendar=new CalendarBean();
calendar.setYear(year);
calendar.setMonth(month);
String day[]=calendar.getCalendar();
for(int i=0;i<42;i++)
{ labelDay[i].setText(day[i]);
}
lab1=new Label("請輸入日期");
lab2=new Label("年份");
lab3=new Label("月份");
Enter=new Button("確定");
text1=new TextField(10);
text2=new TextField(5);
nextMonth=new Button("下月");
previousMonth=new Button("上月");
Enter.addActionListener(this);
nextMonth.addActionListener(this);
previousMonth.addActionListener(this);
Panel pNorth=new Panel(),
pSouth=new Panel();
pNorth.add( lab1);
pNorth.add(lab2);
pNorth.add( text1);
pNorth.add(lab3);
pNorth.add(text2);
pNorth.add(Enter);
pNorth.add(previousMonth);
pNorth.add(nextMonth);
pSouth.add(showMessage);
showMessage.setText("日歷:"+calendar.getYear()+"年"+ calendar.getMonth()+"月" );
ScrollPane scrollPane=new ScrollPane();
scrollPane.add(pCenter);
add(scrollPane,BorderLayout.CENTER);
add(pNorth ,BorderLayout.NORTH);
add(pSouth ,BorderLayout.SOUTH);
}
public void actionPerformed(ActionEvent e)
{ if(e.getSource()==nextMonth)
{ month=month+1;
if(month>12)
month=1;
calendar.setMonth(month);
String day[]=calendar.getCalendar();
for(int i=0;i<42;i++)
{ labelDay[i].setText(day[i]);
}
}
else if(e.getSource()==previousMonth)
{ month=month-1;
if(month<1)
month=12;
calendar.setMonth(month);
String day[]=calendar.getCalendar();
for(int i=0;i<42;i++)
{ labelDay[i].setText(day[i]);
}
}else {
String yea=text1.getText();
String mon=text2.getText();
try{
year=Integer.parseInt(yea);
month=Integer.parseInt(mon);
if(month>12||month<1||year<1){
JOptionPane.showMessageDialog(null, "請輸入正確月份或月份");
return;
}
else{
calendar.setYear(year);
calendar.setMonth(month);
}
String day[]=calendar.getCalendar();
for(int i=0;i<42;i++)
{
labelDay[i].setText(day[i]);
}
}catch(NumberFormatException ee){
JOptionPane.showMessageDialog(null, "請輸入正確的年份及月份");
}
}
showMessage.setText("日歷:"+calendar.getYear()+"年"+calendar.getMonth()+"月" );
}

}
public class CalendarMainClass
{ public static void main(String args[])
{ CalendarFrame frame=new CalendarFrame();
frame.setTitle("日歷");
frame.setBounds(300,200,500,300);
frame.setVisible(true);
frame.validate();
frame.addWindowListener(new java.awt.event.WindowAdapter()
{ public void windowClosing(java.awt.event.WindowEvent e)
{ System.exit(0);
}
}
);
}
}

有問題就追問。滿意請採納。

『伍』 JAVA編寫日歷

最主要的就是
java.util.Calendar

這個類。

如果你只是要寫一個應用程序,就不需要其它特別的

如果你是要窗口形式的,就需要一些swing方面的知識。
如果你是要web形式的,就需要j2ee方面的知識。

『陸』 java編寫日歷界面

幾年前寫的一個日歷

importjava.util.ArrayList;
importjava.util.Calendar;
importjava.util.List;

publicclass${

privatestaticint[]DAYS={31,28,31,30,31,30,31,31,30,31,30,31};

publicstaticvoidmain(String[]args){

longl1=System.currentTimeMillis();
Listdata=rili(2015,1,2015,12);
longl2=System.currentTimeMillis();

for(inti=0;i<data.size();i++){
System.out.println(data.get(i));
}
System.out.println((l2-l1)+"MS");
}

privatestaticListrili(intstartYear,intstartMonth,intendYear,intendMonth){

if(startYear>endYear||(startYear==endYear&&startMonth>endMonth)){
returnnull;
}
Listdata=newArrayList();

for(intii=startYear;ii<=endYear;ii++){

intstartM=startMonth-1;
intendM=endMonth-1;

if(startYear<endYear){
if(ii==endYear){
endM=11;
}else{
startM=0;
}
}
for(inti=startM;i<=endM;i++){
data.add("-----------------------"+ii+"年"+(i+1)+"月-----------------------");
data.add("日 一 二 三 四 五 六");

intday=days(ii,i);
StringBufferbuf=newStringBuffer();
intidx=1;
while(idx<=day){
intlen=0;
if(idx==1){
Calendarc=Calendar.getInstance();
c.set(ii,i,idx);
intxingqi=c.get(Calendar.DAY_OF_WEEK);
len=getLen(xingqi);
buf.append(addBlank(len));
}
buf.append(idx++);
for(intk=len+1;k<7;k++){
if(idx>day){
break;
}
buf.append(" "+(idx++));
}
buf.append(" ");
}
data.add(buf);
}
}
returndata;
}

(intlen){
StringBufferbuf=newStringBuffer();
for(intindex=0;index<len;index++){
buf.append(" ");
}
returnbuf;
}

privatestaticintgetLen(intxingqi){
returnxingqi==Calendar.SUNDAY?0:xingqi-1;
}

publicstaticintdays(intyear,intmonth){

if(month!=1){
returnDAYS[month];
}

if((year%4==0&&year%100!=0)||year%400==0){
return29;
}
returnDAYS[month];
}
}

『柒』 如何用java里的Calendar類編寫萬年歷

/*
題目:輸出任意年份任意月份的日歷表(公元後)
思路:
1.已知1年1月1日是星期日,1%7=1對應的是星期日,2%7=2對應的是星期一,以此類推;
2.計算當年以前所有天數+當年當月1號之前所有天數;
a.年份分平年閏年,平年365天,閏年366天;
b.閏年的判斷方法year%400==0||(year%100!=0&&year%4==0)若為真,則為閏年否則為平年;
c.定義平年/閏年數組,包含各月天數;
d.遍歷數組求和,計算當年當月前總天數;
e.當年以前所有天數+當年當月前總天數+1即為1年1月1日到當年當月1日的總天數;
3.總天數對7取模,根據結果判斷當月1號是星期幾,輸出空白區域;
4.輸出當月日歷表,逢星期六換行
*/
importjava.util.Scanner;
classFindMonthList{
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);
System.out.println("請輸入年份:");
intyear=sc.nextInt();//年份
if(year<1){//判斷非法輸入年份
System.out.println("輸入錯誤!");
return;
}
System.out.println("請輸入月份:");
intmonth=sc.nextInt();//月份
if(month<1||month>12){//判斷非法輸入月份
System.out.println("輸入錯誤!");
return;
}
//輸出表頭
System.out.println("-------"+year+"年"+month+"月"+"-------");
System.out.println();
System.out.println("日一二三四五六");

//計算當前年份以前所有天數beforeYearTotalDay;每4年一個閏年,閏年366天,平年365天
intbeforeYearTotalDay=((year-1)/4*366)+(year-1-((year-1)/4))*365;
int[]arrLeapYear={0,31,29,31,30,31,30,31,31,30,31,30,31};//閏年各月天數int數組
int[]arrNormalYear={0,31,28,31,30,31,30,31,31,30,31,30,31};//平年各月天數int數組
intbeforeMonthTotalDay=0;//定義本年當月之前月份的總天數
if(year%400==0||(year%100!=0&&year%4==0)){//判斷當前年份是否是閏年
for(inti=0;i<month;i++){//for循環計算當月之前總天數
//計算當前月份之前的所有天數
beforeMonthTotalDay=beforeMonthTotalDay+arrLeapYear[i];
}
//判斷當月1日是星期幾
inttotalDay=beforeYearTotalDay+beforeMonthTotalDay+1;
intweek=totalDay%7;//已知1年1月1日是星期日,即模7得1對應的是星期日
for(inti=0;i<(week-1+7)%7;i++){//如果寫成i<(week-1)會出現i<-1的情況
System.out.print("");//輸出開頭空白
}
for(inti=1;i<=arrLeapYear[month];i++){//for循環輸出各月天數
System.out.print(i+"");
if(i<10){//小於10的數補一個空格,以便列印整齊
System.out.print("");
}
if(i%7==((7-(week-1))%7)||i==arrLeapYear[month]){//每逢星期六/尾數換行
System.out.println();
}
}

}else{//不是閏年就是平年
for(inti=0;i<month;i++){//for循環計算出當月之前月份總天數
beforeMonthTotalDay=beforeMonthTotalDay+arrNormalYear[i];
}
//判斷當月1日是星期幾
inttotalDay=beforeYearTotalDay+beforeMonthTotalDay+1;
intweek=totalDay%7;//已知1年1月1日是星期日,即模7得1對應的是星期日
for(inti=0;i<(week-1+7)%7;i++){//如果寫成i<(week-1)會出現i<-1的情況
System.out.print("");//輸出開頭空白
}
for(inti=1;i<=arrNormalYear[month];i++){//for循環輸出各月天數
System.out.print(i+"");
if(i<10){//小於10的數補一個空格,以便列印整齊
System.out.print("");
}
if(i%7==((7-(week-1))%7)||i==arrNormalYear[month]){//每逢星期六/尾數換行
System.out.println();
}
}
}
}
}

『捌』 用java寫個日歷程序怎麼寫,請給出詳細步驟,謝謝

隨便做了一個,其實一樓網友說的判斷哪些30天,是否閏年什麼的沒必要,看代碼:

packagecom..calendar;

importjava.awt.BorderLayout;
importjava.awt.Color;
importjava.awt.FlowLayout;
importjava.awt.Font;
importjava.awt.GridLayout;
importjava.awt.event.ItemEvent;
importjava.awt.event.ItemListener;
importjava.text.DateFormat;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;

importjavax.swing.JComboBox;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.border.CompoundBorder;
importjavax.swing.border.EmptyBorder;
importjavax.swing.border.LineBorder;

{
=1L;
privateJComboBoxyearBox,monthBox;
privatestaticfinalintYEAR_RANGE=50;//年份范圍,即往前往後各推多少年

privateJPaneltopPane,contentPane;
privateJPanelbottomPane,bottomTopPane,mainPane;
privateJLabeldateLabel;

privatebooleaninit=false;
privateCalendarcal;
privatestaticfinalCalendarNOW=Calendar.getInstance();
privatestaticfinalString[]DAY_OF_WEEK={"星期日","星期一","星期二",
"星期三","星期四","星期五","星期六"};

privateDateFormatdf=newSimpleDateFormat("yyyy年MM月");
privatestaticfinalColorFONT_GRAY=newColor(0xaa,0xaa,0xaa);

privatestaticfinalintDATE_GRAY=-1;
privatestaticfinalintDATE_RED=1;
privatestaticfinalintDATE_BLACK=0;

publicCalendarInterface(){
super("日歷");
cal=Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.SUNDAY);
}

publicvoidlaunch(){
setVisible(true);
setSize(600,450);
setDefaultCloseOperation(EXIT_ON_CLOSE);
//主面板
contentPane=newJPanel(newBorderLayout());
contentPane.setBorder(newEmptyBorder(5,5,5,5));
contentPane.setBackground(Color.WHITE);

//頂部選擇日期和月份的區域
topPane=newJPanel(newFlowLayout(FlowLayout.CENTER,50,0));//居中對齊,控制項間隔50px
topPane.setBorder(newEmptyBorder(0,0,10,0));//底部空出10px
topPane.setBackground(Color.WHITE);

//底部顯示星期條和日歷列表區域
bottomPane=newJPanel(newBorderLayout());
bottomPane.setBorder(newLineBorder(Color.BLACK,1));
//星期條
bottomTopPane=newJPanel(newGridLayout(1,7));
bottomTopPane.setBackground(newColor(0x55,0x55,0x55));
//日期列表
mainPane=newJPanel();
mainPane.setLayout(newGridLayout(0,7));//列數為7,行數自動填充
for(inti=Calendar.SUNDAY;i<=Calendar.SATURDAY;i++){
bottomTopPane.add(createDay(DAY_OF_WEEK[i-1]));
}
bottomPane.add(bottomTopPane,BorderLayout.NORTH);//星期欄放在頂部

//年份下拉列表
yearBox=newJComboBox();
intcurrentYear=cal.get(Calendar.YEAR);
//年份范圍為往前往後各推50年
for(inti=currentYear-YEAR_RANGE;i<currentYear+YEAR_RANGE+1;i++){
yearBox.addItem(i);
}
yearBox.addItemListener(newItemListener(){
@Override
publicvoiditemStateChanged(ItemEvente){
if(ItemEvent.SELECTED==e.getStateChange()){
reset();//選擇後刷新布局
}
}
});
yearBox.setSelectedIndex(YEAR_RANGE);//默認選中當前年份

Stringmonths[]={"1","2","3","4","5","6","7","8","9","10","11","12"};
//月份下拉列表
monthBox=newJComboBox(months);
monthBox.addItemListener(newItemListener(){
@Override
publicvoiditemStateChanged(ItemEvente){
if(ItemEvent.SELECTED==e.getStateChange()){
reset();//刷新布局
}
}
});
monthBox.setSelectedIndex(cal.get(Calendar.MONTH));//選擇當前月份

//顯示當前年月的控制項
this.dateLabel=newJLabel(df.format(cal.getTime()));
topPane.add(yearBox);
topPane.add(monthBox);
topPane.add(dateLabel);

contentPane.add(topPane,BorderLayout.NORTH);
bottomPane.add(mainPane,BorderLayout.CENTER);
contentPane.add(bottomPane,BorderLayout.CENTER);
setContentPane(contentPane);
validate();
init=true;//初始化完成
reset();//刷新界面
setLocationRelativeTo(null);//居中顯示
}

publicstaticvoidmain(String[]args){
newCalendarInterface().launch();
}

privatevoidreset(){//每次年份或月份改變後則日歷重新排列
if(!init){//若未初始化則返回,避免設置默認年月時調用此方法出錯
return;
}
intyear=(Integer)yearBox.getSelectedItem();
intmonth=Integer.parseInt((String)monthBox.getSelectedItem());

//將日期設置為本月第一天
cal.set(Calendar.YEAR,year);
cal.set(Calendar.MONTH,month-1);
cal.set(Calendar.DATE,1);
dateLabel.setText(df.format(cal.getTime()));//顯示年月

mainPane.removeAll();//清空日歷列表

//判斷本月第一天是星期幾,在第一天之前增加空的日歷
intstartDayOfWeek=cal.get(Calendar.DAY_OF_WEEK);
inti;
//先設置為本周屬於上個月的幾天,置灰顯示
cal.add(Calendar.DATE,-(startDayOfWeek-Calendar.SUNDAY)-1);
for(i=Calendar.SUNDAY;i<startDayOfWeek;i++){
cal.add(Calendar.DATE,1);
intdate=cal.get(Calendar.DATE);
mainPane.add(createDate(Integer.toString(date),DATE_GRAY));
}
i=startDayOfWeek;

//重新初始化為本月第一天
cal.set(Calendar.MONTH,month-1);
cal.set(Calendar.DATE,1);
intmaxDate=cal.getActualMaximum(Calendar.DATE);//本月最多的天數(不用再去判斷是否閏年了)
for(intj=1;j<=maxDate;j++){
cal.set(Calendar.DATE,j);//日期一直自增,用來判斷是否是今天
JLabeljlDate=null;
if(isToday()){//是今天則高亮顯示
jlDate=createDate(Integer.toString(j),DATE_RED);
}else{//不是今天則顯示為普通顏色
jlDate=createDate(Integer.toString(j));
}
mainPane.add(jlDate);
}
//最後一周把不屬於本月的幾天用灰色控制項填充
intlastDay=cal.get(Calendar.DAY_OF_WEEK);
for(i=lastDay;i<Calendar.SATURDAY;i++){
cal.add(Calendar.DATE,1);
intdate=cal.get(Calendar.DATE);
mainPane.add(createDate(Integer.toString(date),DATE_GRAY));
}
mainPane.validate();
}

privateJLabelcreateDate(Stringdate){
returncreateDate(date,DATE_BLACK);
}
//創建日期控制項
privateJLabelcreateDate(Stringdate,intdateColor){
JLabellabel=newJLabel(date,JLabel.CENTER);
CompoundBorderborder=newCompoundBorder(
newLineBorder(Color.WHITE,1),
newEmptyBorder(10,10,10,10));

label.setBorder(border);
Fontfont=newFont("Arial",Font.BOLD,30);
if(DATE_GRAY==dateColor){//如果不是本月則文字置灰
label.setForeground(FONT_GRAY);
}elseif(DATE_RED==dateColor){//如果是今天則高亮顯示
label.setForeground(Color.RED);
}
label.setFont(font);
returnlabel;
}

//創建星期幾的橫條
privateJLabelcreateDay(Stringday){
JLabeljlDay=newJLabel(day,JLabel.CENTER);
jlDay.setBorder(newEmptyBorder(5,5,5,5));
jlDay.setBackground(Color.GRAY);
jlDay.setForeground(Color.WHITE);
returnjlDay;
}

//判斷是否今天
privatebooleanisToday(){
returncal.get(Calendar.YEAR)==NOW.get(Calendar.YEAR)
&&cal.get(Calendar.MONTH)==NOW.get(Calendar.MONTH)
&&cal.get(Calendar.DATE)==NOW.get(Calendar.DATE);
}
}

『玖』 怎麼用java寫日歷

以下是兩個類,請樓主分別存成兩個java文件:
其中
MainFrame.java是顯示日歷程序,Clock.java是日歷計算程序。編譯後運行MainFrame這個類即可。

1.MainFrame.java
---
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Date;
import java.util.Calendar;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class MainFrame extends JFrame {
/** *//**
*
*/
private static final long serialVersionUID = 1L;
JPanel panel = new JPanel(new BorderLayout());
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel(new GridLayout(7, 7));
JPanel panel3 = new JPanel();
JLabel[] label = new JLabel[49];
JLabel y_label = new JLabel("年份");
JLabel m_label = new JLabel("月份");
JComboBox com1 = new JComboBox();
JComboBox com2 = new JComboBox();
int re_year, re_month;
int x_size, y_size;
String year_num;
Calendar now = Calendar.getInstance(); // 實例化Calendar

MainFrame() {
super("萬年歷");
setSize(300, 350);
x_size = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth());
y_size = (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight());
setLocation((x_size - 300) / 2, (y_size - 350) / 2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel1.add(y_label);
panel1.add(com1);
panel1.add(m_label);
panel1.add(com2);
for (int i = 0; i < 49; i++) {
label[i] = new JLabel("", JLabel.CENTER);// 將顯示的字元設置為居中
panel2.add(label[i]);
}
panel3.add(new Clock(this));
panel.add(panel1, BorderLayout.NORTH);
panel.add(panel2, BorderLayout.CENTER);
panel.add(panel3, BorderLayout.SOUTH);
panel.setBackground(Color.white);
panel1.setBackground(Color.white);
panel2.setBackground(Color.white);
panel3.setBackground(Color.white);
Init();
com1.addActionListener(new ClockAction());
com2.addActionListener(new ClockAction());

setContentPane(panel);
setVisible(true);
setResizable(false);
}

class ClockAction implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
int c_year, c_month, c_week;
c_year = Integer.parseInt(com1.getSelectedItem().toString()); // 得到當前所選年份
c_month = Integer.parseInt(com2.getSelectedItem().toString()) - 1; // 得到當前月份,並減1,計算機中的月為0-11
c_week = use(c_year, c_month); // 調用函數use,得到星期幾
Resetday(c_week, c_year, c_month); // 調用函數Resetday
}
}

public void Init() {
int year, month_num, first_day_num;
String log[] = { "日", "一", "二", "三", "四", "五", "六" };
for (int i = 0; i < 7; i++) {
label[i].setText(log[i]);
}
for (int i = 0; i < 49; i = i + 7) {
label[i].setForeground(Color.red); // 將星期日的日期設置為紅色
}
for (int i = 6; i < 49; i = i + 7) {
label[i].setForeground(Color.green);// 將星期六的日期設置為綠色
}
for (int i = 1; i < 10000; i++) {
com1.addItem("" + i);
}
for (int i = 1; i < 13; i++) {
com2.addItem("" + i);
}
month_num = (int) (now.get(Calendar.MONTH)); // 得到當前時間的月份
year = (int) (now.get(Calendar.YEAR)); // 得到當前時間的年份
com1.setSelectedIndex(year - 1); // 設置下拉列表顯示為當前年
com2.setSelectedIndex(month_num); // 設置下拉列表顯示為當前月
first_day_num = use(year, month_num);
Resetday(first_day_num, year, month_num);
}

public int use(int reyear, int remonth) {
int week_num;
now.set(reyear, remonth, 1); // 設置時間為所要查詢的年月的第一天
week_num = (int) (now.get(Calendar.DAY_OF_WEEK));// 得到第一天的星期
return week_num;
}

@SuppressWarnings("deprecation")
public void Resetday(int week_log, int year_log, int month_log) {
int month_day_score; // 存儲月份的天數
int count;
month_day_score = 0;
count = 1;

Date date = new Date(year_log, month_log + 1, 1); // now
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, -1); // 前個月
month_day_score = cal.getActualMaximum(Calendar.DAY_OF_MONTH);// 最後一天

for (int i = 7; i < 49; i++) { // 初始化標簽
label[i].setText("");
}
week_log = week_log + 6; // 將星期數加6,使顯示正確
month_day_score = month_day_score + week_log;
for (int i = week_log; i < month_day_score; i++, count++) {
label[i].setText(count + "");
}
}

public static void main(String[] args) {
JFrame.(true);
new MainFrame();
}
}
2.Clock.java
-----
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Date;
import java.util.Calendar;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

//顯示時間的類:Clock

/** *//**
* Clock.java
* Summary 數字時間顯示
* Created on
* @author
* remark
*/

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.text.SimpleDateFormat;
import java.util.Calendar;
class Clock extends Canvas implements Runnable{
/** *//**
*
*/
private static final long serialVersionUID = 3660124045489727166L;
MainFrame mf;
Thread t;
String time;
public Clock(MainFrame mf){
this.mf=mf;
setSize(280,40);
setBackground(Color.white);
t=new Thread(this); //實例化線程
t.start(); //調用線程
}
public void run(){
while(true){
try{
Thread.sleep(1000); //休眠1秒鍾
}catch(InterruptedException e){
System.out.println("異常");
}
this.repaint(100);
}
}
public void paint(Graphics g){
Font f=new Font("宋體",Font.BOLD,16);
SimpleDateFormat SDF=new SimpleDateFormat("yyyy'年'MM'月'dd'日'HH:mm:ss");//格式化時間顯示類型
Calendar now=Calendar.getInstance();
time=SDF.format(now.getTime()); //得到當前日期和時間
g.setFont(f);
g.setColor(Color.orange);
g.drawString(time,45,25);
}
}

『拾』 如何用JAVA編寫出一個簡單的日歷

import javax.swing.JOptionPane;

public class NewClass{
public static void main(String[] args){
int year,month;
Calender cal=new Calender(2008,10);
cal.showCalender();
year=Integer.parseInt(JOptionPane.showInputDialog("Year:"));
month=Integer.parseInt(JOptionPane.showInputDialog("Month:"));
cal.setYear(year);
cal.setMonth(month);
cal.showCalender();
}
}

class Calender{
private int year,month;
public Calender(){
year=0;
month=1;
}
public Calender(int year){
this.year=year;
month=1;
}
public Calender(int year,int month){
this.year=year;
if(month>12)
this.month=month%12;
else
this.month=month;
}
public void setYear(int year){
this.year=year;
}
public void setMonth(int month){
if(month>12)
this.month=month%12;
else
this.month=month;
}
private int dayOfMonth(){
int days=0;
switch(month){
case 1:days=31;break;
case 2:{
if(((year%4==0)&&(year%100!=0))||(year%400==0))
days=29;
else
days=28;
break;
}
case 3:days=31;break;
case 4:days=30;break;
case 5:days=31;break;
case 6:days=30;break;
case 7:days=31;break;
case 8:days=31;break;
case 9:days=30;break;
case 10:days=31;break;
case 11:days=30;break;
case 12:days=31;break;
default:
days=0;
}
return days;
}
private int dayOfWeek(){
int Y=year;
int M=month;
int D=1;
int A;
A = Y>0?(5+(Y+1)+(Y-1)/4-(Y-1)/100+(Y-1)/400)%7:(5+Y+Y/4-Y/100+Y/400)%7;
A = M>2?(A+2*(M+1)+3*(M+1)/5)%7:(A+2*(M+2)+3*(M+2)/5)%7;
if (((Y%4 == 0 && Y%100 != 0)|| Y%400 == 0) && M>2) A =(A+1)%7;
A=(A+D)%7;
return A;
}
public void showCalender(){
String str=new String();
str=" ";
str+=year+"年"+month+"月";
str+="\n\n";
str+="日 一 二 三 四 五 六\n";
int week=this.dayOfWeek();
for(int i=0,j=1;i<7;i++){
if(i<week)
str+=" ";
else{
str+=" "+j+" ";
j++;
}
}
str+="\n";
end:
for(int i=7-week+1;i<=this.dayOfMonth();){
for(int j=0;j<7;j++){
if(i<10)
str+=" "+i+" ";
else
str+=i+" ";
i++;
if(i>this.dayOfMonth())
break end;
}
str+="\n";
}
JOptionPane.showMessageDialog(null,str);

}
}
用一個類來實現

熱點內容
筆記本電腦如何設置鎖屏密碼 發布:2025-02-04 13:54:42 瀏覽:161
構成c語言程序的基本單位 發布:2025-02-04 13:49:53 瀏覽:988
如何修改已經更改的密碼 發布:2025-02-04 13:38:38 瀏覽:773
唐dm2021買哪個配置劃算 發布:2025-02-04 13:38:38 瀏覽:627
真空壓縮重 發布:2025-02-04 13:38:37 瀏覽:640
alias腳本 發布:2025-02-04 13:38:03 瀏覽:740
linux終端字元 發布:2025-02-04 12:52:40 瀏覽:737
c語言程序設計mobi 發布:2025-02-04 12:51:55 瀏覽:260
rsa演算法c語言 發布:2025-02-04 12:50:36 瀏覽:786
阿里雲伺服器託管破解 發布:2025-02-04 12:47:43 瀏覽:258