怎样用JAVA写一个10钟倒计时程序?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样用JAVA写一个10钟倒计时程序?相关的知识,希望对你有一定的参考价值。
import java.awt.Color;import java.util.*;
import java.awt.*;
import java.applet.*;
public class Clock extends Applet implements Runnable
Thread timer=null;
Label label;
int lastxs=50,lastys=30,lastxm=50,lastym=30,lastxh=50,lastyh=30;
public void init()
label=new Label(" ");
setBackground(Color.white);
add(label);
public void paint(Graphics g)
int xh,yh,xm,ym,xs,ys,s,m,h,xcenter,ycenter;
Date rightnow=new Date();
String today=rightnow.toLocaleString();
label.setText(today);
s=rightnow.getSeconds();
m=rightnow.getMinutes();
h=rightnow.getHours();
xcenter=100;
ycenter=80;
xs=(int)(Math.cos(s*3.14f/30-3.14f/2)*45+xcenter);
ys=(int)(Math.sin(s*3.14f/30-3.14f/2)*45+ycenter);
xm=(int)(Math.cos(m*3.14f/30-3.14f/2)*45+xcenter);
ym=(int)(Math.sin(m*3.14f/30-3.14f/2)*45+ycenter);
xh=(int)(Math.cos((h*30+m*2)*3.14f/180-3.14f/2)*30+xcenter);
yh=(int)(Math.sin((h*30+m*2)*3.14f/180-3.14f/2)*30+ycenter);
g.setFont(new Font("TimesToman",Font.PLAIN,14));
g.setColor(Color.orange);
g.fill3DRect(xcenter-50,ycenter-50,100,100,true);
g.setColor(Color.darkGray);
g.drawString("12",xcenter-5,ycenter-37);
g.drawString("3",xcenter+40,ycenter+3);
g.drawString("6",xcenter-3,ycenter+45);
g.drawString("9",xcenter-45,ycenter+3);
g.setColor(Color.orange);
if(xs!=lastxs||ys!=lastys)
g.drawLine(xcenter,ycenter,lastxs,lastys);
if(xm!=lastxm||ym!=lastym)
g.drawLine(xcenter,ycenter-1,lastxm,lastym);
g.drawLine(xcenter-1,ycenter,lastxm,lastym);
if(xh!=lastxh||yh!=lastyh)
g.drawLine(xcenter,ycenter-1,lastxh,lastyh);
g.drawLine(xcenter-1,ycenter,lastxh,lastyh);
g.setColor(Color.red);
g.drawLine(xcenter,ycenter,xs,ys);
g.drawLine(xcenter,ycenter-1,xm,ym);
g.drawLine(xcenter-1,ycenter,xm,ym);
g.drawLine(xcenter,ycenter-1,xh,yh);
g.drawLine(xcenter-1,ycenter,xh,yh);
lastxs=xs;
lastys=ys;
lastxm=xm;
lastym=ym;
lastxh=xh;
lastyh=yh;
public void start()
if(timer==null)
timer=new Thread(this);
timer.start();
public void stop()
timer=null;
public void run()
while(timer!=null)
try
Thread.sleep(1000);
catch(InterruptedException ie)
repaint();
timer=null;
public void update(Graphics g)
paint(g);
参考技术A public class Daojishi extends Thread
public static void main(String[] args) throws Exception
for(int i=10;i>0;i--)
Thread.sleep(1000);
System.out.println("倒计时:"+i);
本回答被提问者和网友采纳 参考技术B 楼上的不行,sleep(1000)只是休息1000ms但是不一定休息完马上就又开始运行,所以大多数会超过十秒.
应该采用计时器TimeTask和Timer类 参考技术C 你弄一个整数代表时间,一开始是10分钟,然后用sleep(1000)每隔一秒刷新一次不就好了。
怎样用java编写日历
import java.awt.BorderLayout;import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.SystemColor;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.Date;
import java.util.StringTokenizer;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JToggleButton;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
/**
* <p>Title: Swing日历</p>
* <p>Description: 操作日期</p>
* @author duxu2004
* @version 1.0.1
*/
class JCalendar extends JPanel
//动态表示年月日
private int year=0;
private int month=0;
private int day=0;
//主面板
private JPanel Main = new JPanel();
//日面板
private JPanel jPanelDay = new JPanel();
//月面板
private JPanel jPanelMonth = new JPanel();
//年的输入位置
private JTextField Year = new JTextField();
//月的输入位置
private JTextField Month = new JTextField();
//减少月份
private JButton MonthDown = new JButton();
//增加月份
private JButton MonthUp = new JButton();
private JPanel jPanelButton = new JPanel();
//减少年份
private JButton YearDown = new JButton();
//增加年份
private JButton YearUp = new JButton();
//显示日期的位置
private JLabel Out = new JLabel();
//中国时区,以后可以从这里扩展可以设置时区的功能
private Locale l=Locale.CHINESE;
//主日历
private GregorianCalendar cal=new GregorianCalendar(l);
//星期面板
private JPanel weekPanel=new JPanel();
//天按钮组
private JToggleButton[] days=new JToggleButton[42];
//天面板
private JPanel Days = new JPanel();
//标示
private JLabel jLabel1 = new JLabel();
private JLabel jLabel2 = new JLabel();
private JLabel jLabel3 = new JLabel();
private JLabel jLabel4 = new JLabel();
private JLabel jLabel5 = new JLabel();
private JLabel jLabel6 = new JLabel();
private JLabel jLabel7 = new JLabel();
//当前选择的天数按钮
private JToggleButton cur=null;
//月份天数数组,用来取得当月有多少天
// 1 2 3 4 5 6 7 8 9 10 11 12
private int[] mm=31,28,31,30,31,30,31,31,30,31,30,31;
//空日期构造函数
public JCalendar()
try
jbInit();
catch(Exception e)
e.printStackTrace();
//带日期设置的构造函数
public JCalendar(int year, int month, int day)
cal.set(year, month, day);
try
jbInit();
catch (Exception e)
e.printStackTrace();
//带日历输入的构造函数
public JCalendar(GregorianCalendar calendar)
cal=calendar;
try
jbInit();
catch (Exception e)
e.printStackTrace();
//带日期输入的构造函数
public JCalendar(Date date)
cal.setTime(date);
try
jbInit();
catch (Exception e)
e.printStackTrace();
//初始化组件
private void jbInit() throws Exception
//初始化年、月、日
iniCalender();
this.setLayout(new BorderLayout());
this.setBorder(BorderFactory.createRaisedBevelBorder());
this.setMaximumSize(new Dimension(200, 200));
this.setMinimumSize(new Dimension(200, 200));
this.setPreferredSize(new Dimension(200, 200));
Main.setLayout(new BorderLayout());
Main.setBackground(SystemColor.info);
Main.setBorder(null);
Out.setBackground(Color.lightGray);
Out.setHorizontalAlignment(SwingConstants.CENTER);
Out.setMaximumSize(new Dimension(100, 19));
Out.setMinimumSize(new Dimension(100, 19));
Out.setPreferredSize(new Dimension(100, 19));
jLabel1.setForeground(Color.red);
jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
jLabel1.setHorizontalTextPosition(SwingConstants.CENTER);
jLabel1.setText("日");
jLabel2.setForeground(Color.blue);
jLabel2.setHorizontalAlignment(SwingConstants.CENTER);
jLabel2.setHorizontalTextPosition(SwingConstants.CENTER);
jLabel2.setText("六");
jLabel3.setHorizontalAlignment(SwingConstants.CENTER);
jLabel3.setHorizontalTextPosition(SwingConstants.CENTER);
jLabel3.setText("五");
jLabel4.setHorizontalAlignment(SwingConstants.CENTER);
jLabel4.setHorizontalTextPosition(SwingConstants.CENTER);
jLabel4.setText("四");
jLabel5.setHorizontalAlignment(SwingConstants.CENTER);
jLabel5.setHorizontalTextPosition(SwingConstants.CENTER);
jLabel5.setText("三");
jLabel6.setBorder(null);
jLabel6.setHorizontalAlignment(SwingConstants.CENTER);
jLabel6.setHorizontalTextPosition(SwingConstants.CENTER);
jLabel6.setText("二");
jLabel7.setBackground(Color.lightGray);
jLabel7.setForeground(Color.black);
jLabel7.setBorder(null);
jLabel7.setHorizontalAlignment(SwingConstants.CENTER);
jLabel7.setHorizontalTextPosition(SwingConstants.CENTER);
jLabel7.setText("一");
weekPanel.setBackground(UIManager.getColor("InternalFrame.activeTitleGradient"));
weekPanel.setBorder(BorderFactory.createEtchedBorder());
weekPanel.setLayout(new GridLayout(1,7));
weekPanel.add(jLabel1, null);
weekPanel.add(jLabel7, null);
weekPanel.add(jLabel6, null);
weekPanel.add(jLabel5, null);
weekPanel.add(jLabel4, null);
weekPanel.add(jLabel3, null);
weekPanel.add(jLabel2, null);
MonthUp.setAlignmentX((float) 0.0);
MonthUp.setActionMap(null);
jPanelMonth.setBackground(SystemColor.info);
jPanelMonth.setLayout(new BorderLayout());
jPanelMonth.setBorder(BorderFactory.createEtchedBorder());
Month.setBorder(null);
Month.setHorizontalAlignment(SwingConstants.CENTER);
Month.addMouseListener(new java.awt.event.MouseAdapter()
public void mouseClicked(MouseEvent e)
Month_mouseClicked(e);
);
Month.addKeyListener(new java.awt.event.KeyAdapter()
public void keyPressed(KeyEvent e)
Month_keyPressed(e);
);
MonthDown.setBorder(null);
MonthDown.setText("\u25C4");
MonthDown.addActionListener(new java.awt.event.ActionListener()
public void actionPerformed(ActionEvent e)
MonthDown_actionPerformed(e);
);
MonthUp.setBorder(null);
MonthUp.setText("\u25BA");
MonthUp.addActionListener(new java.awt.event.ActionListener()
public void actionPerformed(ActionEvent e)
MonthUp_actionPerformed(e);
);
jPanelButton.setLayout(null);
jPanelButton.setBorder(null);
jPanelButton.addComponentListener(new java.awt.event.ComponentAdapter()
public void componentResized(java.awt.event.ComponentEvent evt)
jPanelButtonComponentResized(evt);
);
Year.setBorder(BorderFactory.createEtchedBorder());
Year.setMaximumSize(new Dimension(80, 25));
Year.setMinimumSize(new Dimension(80, 25));
Year.setPreferredSize(new Dimension(80, 25));
Year.setHorizontalAlignment(SwingConstants.CENTER);
Year.addMouseListener(new java.awt.event.MouseAdapter()
public void mouseClicked(MouseEvent e)
Year_mouseClicked(e);
);
Year.addKeyListener(new java.awt.event.KeyAdapter()
public void keyPressed(KeyEvent e)
Year_keyPressed(e);
);
YearDown.setBorder(null);
YearDown.setMaximumSize(new Dimension(16, 16));
YearDown.setMinimumSize(new Dimension(16, 16));
YearDown.setPreferredSize(new Dimension(16, 16));
YearDown.setSize(new Dimension(16, 16));
YearDown.setText("▼");
YearDown.addActionListener(new java.awt.event.ActionListener()
public void actionPerformed(ActionEvent e)
YearDown_actionPerformed(e);
);
YearUp.setBorder(null);
YearUp.setMaximumSize(new Dimension(16, 16));
YearUp.setMinimumSize(new Dimension(16, 16));
YearUp.setPreferredSize(new Dimension(16, 16));
YearUp.setSize(new Dimension(16, 16));
YearUp.setText("▲");
YearUp.addActionListener(new java.awt.event.ActionListener()
public void actionPerformed(ActionEvent e)
YearUp_actionPerformed(e);
);
jPanelDay.setLayout(new BorderLayout());
Days.setLayout(new GridLayout(6,7));
Days.setBackground(SystemColor.info);
for(int i=0;i<42;i++)
days[i]=new JToggleButton();
days[i].setBorder(null);
days[i].setBackground(SystemColor.info);
days[i].setHorizontalAlignment(SwingConstants.CENTER);
days[i].setHorizontalTextPosition(SwingConstants.CENTER);
//days[i].setSize(l,l);
days[i].addActionListener(new java.awt.event.ActionListener()
public void actionPerformed(ActionEvent e)
day=Integer.parseInt(((JToggleButton)e.getSource()).getText());
showDate();
showDays();
);
Days.add(days[i]);
this.add(Main, BorderLayout.NORTH);
this.add(jPanelDay, BorderLayout.CENTER);
this.add(jPanelMonth, BorderLayout.SOUTH);
Main.add(Year, BorderLayout.CENTER);
Main.add(Out, BorderLayout.WEST);
Main.add(jPanelButton, BorderLayout.EAST);
jPanelButton.add(YearUp);
jPanelButton.add(YearDown);
jPanelDay.add(weekPanel,BorderLayout.NORTH);
jPanelDay.add(Days, BorderLayout.CENTER);
jPanelMonth.add(Month, BorderLayout.CENTER);
jPanelMonth.add(MonthDown, BorderLayout.WEST);
jPanelMonth.add(MonthUp, BorderLayout.EAST);
showMonth();
showYear();
showDate();
showDays();
//自定义重画年选择面板
void jPanelButtonComponentResized(java.awt.event.ComponentEvent evt)
YearUp.setLocation(0,0);
YearDown.setLocation(0,YearUp.getHeight());
jPanelButton.setSize(YearUp.getWidth(),YearUp.getHeight()*2);
jPanelButton.setPreferredSize(new Dimension(YearUp.getWidth(),YearUp.getHeight()*2));
jPanelButton.updateUI();
//测试用
public static void main(String[] args)
JFrame f=new JFrame();
f.setContentPane(new JCalendar());
f.pack();
//f.setResizable(false);
f.show();
//增加年份
void YearUp_actionPerformed(ActionEvent e)
year++;
showYear();
showDate();
showDays();
//减少年份
void YearDown_actionPerformed(ActionEvent e)
year--;
showYear();
showDate();
showDays();
//减少月份
void MonthDown_actionPerformed(ActionEvent e)
month--;
if(month<0)
month = 11;
year--;
showYear();
showMonth();
showDate();
showDays();
//增加月份
void MonthUp_actionPerformed(ActionEvent e)
month++;
if(month==12)
month=0;
year++;
showYear();
showMonth();
showDate();
showDays();
//初始化年月日
void iniCalender()
year=cal.get(Calendar.YEAR);
month=cal.get(Calendar.MONTH);
day=cal.get(Calendar.DAY_OF_MONTH);
//刷新月份
void showMonth()
Month.setText(Integer.toString(month+1)+"月");
//刷新年份
void showYear()
Year.setText(Integer.toString(year)+"年");
//刷新日期
void showDate()
Out.setText(Integer.toString(year)+"-"+Integer.toString(month+1)+"-"+Integer.toString(day));
//重画天数选择面板
void showDays()
cal.set(year,month,1);
int firstDayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
int n=mm[month];
if(cal.isLeapYear(year)&&month==1) n++;
int i=0;
for(;i<firstDayOfWeek-1;i++)
days[i].setEnabled(false);
days[i].setSelected(false);
days[i].setText("");
int d=1;
for(;d<=n;d++)
days[i].setText(Integer.toString(d));
days[i].setEnabled(true);
if(d==day) days[i].setSelected(true);
else days[i].setSelected(false);;
i++;
for(;i<42;i++)
days[i].setEnabled(false);
days[i].setSelected(false);
days[i].setText("");
//单击年份面板选择整个年份字符串
void SelectionYear()
Year.setSelectionStart(0);
Year.setSelectionEnd(Year.getText().length());
//单击月份面板选择整个月份字符串
void SelectionMonth()
Month.setSelectionStart(0);
Month.setSelectionEnd(Month.getText().length());
//月份面板响应鼠标单击事件
void Month_mouseClicked(MouseEvent e)
//SelectionMonth();
inputMonth();
//检验输入的月份
void inputMonth()
String s;
if(Month.getText().endsWith("月"))
s=Month.getText().substring(0,Month.getText().length()-1);
else s=Month.getText();
month=Integer.parseInt(s)-1;
this.showMe();
//月份面板键盘敲击事件响应
void Month_keyPressed(KeyEvent e)
if(e.getKeyChar()==10)
inputMonth();
//年份面板响应鼠标单击事件
void Year_mouseClicked(MouseEvent e)
//SelectionYear();
inputYear();
//年份键盘敲击事件响应
void Year_keyPressed(KeyEvent e)
//System.out.print(new Integer(e.getKeyChar()).byteValue());
if(e.getKeyChar()==10)
inputYear();
//检验输入的年份字符串
void inputYear()
String s;
if(Year.getText().endsWith("年"))
s=Year.getText().substring(0,Year.getText().length()-1);
else s=Year.getText();
year=Integer.parseInt(s);
this.showMe();
//以字符串形式返回日期,yyyy-mm-dd
public String getDate()return Out.getText();
//以字符串形式输入日期,yyyy-mm-dd
public void setDate(String date)
if(date!=null)
StringTokenizer f = new StringTokenizer(date, "-");
if(f.hasMoreTokens())
year = Integer.parseInt(f.nextToken());
if(f.hasMoreTokens())
month = Integer.parseInt(f.nextToken());
if(f.hasMoreTokens())
day = Integer.parseInt(f.nextToken());
cal.set(year,month,day);
this.showMe();
//以日期对象形式输入日期
public void setTime(Date date)
cal.setTime(date);
this.iniCalender();
this.showMe();
//返回日期对象
public Date getTime()return cal.getTime();
//返回当前的日
public int getDay()
return day;
//设置当前的日
public void setDay(int day)
this.day = day;
cal.set(this.year,this.month,this.day);
this.showMe();
//设置当前的年
public void setYear(int year)
this.year = year;
cal.set(this.year,this.month,this.day);
this.showMe();
//返回当前的年
public int getYear()
return year;
//返回当前的月
public int getMonth()
return month;
//设置当前的月
public void setMonth(int month)
this.month = month;
cal.set(this.year,this.month,this.day);
this.showMe();
//刷新
public void showMe()
this.showDays();
this.showMonth();
this.showYear();
this.showDate();
public class TestJCalendar
public static void main(String[] args)
JFrame f=new JFrame();
f.setContentPane(new JCalendar());
f.pack();
//f.setResizable(false);
f.show();
参考技术A
Java编写日历代码:
import java.util.Scanner;public class Wan public static void main(String[] args)
Scanner name = new Scanner(System.in);
System.out.print("请输入要查询的年份:");
int year = name.nextInt();
System.out.print("请输入该年的月份");
int month = name.nextInt();
//累加 该年至输入的月份 天数
//比如 输入2009年的 3月分
// 那就累加 2009年的1月至
3月1号的总天数
public void sumDay(int year,int month)
int day = 0;
int sumDay = 0;
for(int i = 1;i<=month;i++) switch(i)
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
case 2:
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(int i = 2000;i<year;i++)
if( i % 4 == 0 || i %400== 0 && i % 100 != 0)
sumDay += 366; else sumDay += 365;
//求该月一号为星期几
int week = sumDay % 7 +1; if(week == 7) week = 0;
public void fomatDate(int week,int day)
int g = 0; for(int i = 0;i<week;i++)
System.out.print("\\t");
for(int i = 1;i<=day;i++) System.out.print(i+"\\t");
g = week + i; if(g % 7 == 0) System.out.println();
以上是关于怎样用JAVA写一个10钟倒计时程序?的主要内容,如果未能解决你的问题,请参考以下文章