怎样用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钟倒计时程序?的主要内容,如果未能解决你的问题,请参考以下文章

怎么编写一个倒计时的java的程序?求具体步骤!

怎样用51单片机实现累加计时和倒计时,并用六个共阴极数码管显示出来。用两个按键分别切换。

[macOS] 一个简单免费的标准番茄钟应用,界面美观

微信番茄钟小程序

微信小程序长时间计时方法

如何用VB6编写一个计时器(如秒表的)高分