⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dingshipanel.java

📁 这是一个定时器的代码,适合初学JAVA的朋友们借鉴
💻 JAVA
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.text.*;
import java.applet.*;
public class DingshiPanel extends JPanel implements ActionListener,Runnable{
	private JTextField jt1,jt2,jt3;
	private JButton jb1,jb2,jb3;
	private JLabel jl1,jl2,jl3,display;
	private Thread th;
	private volatile boolean run;
	private int hour,min,sec;
	private AudioClip au;
	public DingshiPanel(){
		th=new Thread(this);
		au=Applet.newAudioClip(this.getClass().getResource("alarm.wav"));
		JPanel jpt=new JPanel(new GridLayout(1,6));
		jpt.add(jl1=new JLabel("时"));
		jpt.add(jt1=new JTextField("0"));
		jpt.add(jl2=new JLabel("分"));
		jpt.add(jt2=new JTextField("0"));
		jpt.add(jl3=new JLabel("秒"));
		jpt.add(jt3=new JTextField("0"));
		display=new JLabel("00:00:00");
		display.setHorizontalAlignment(JLabel.CENTER); 
		display.setFont(new Font("黑体",Font.BOLD,35));
		jl1.setHorizontalAlignment(JLabel.RIGHT);
		jl2.setHorizontalAlignment(JLabel.RIGHT);
		jl3.setHorizontalAlignment(JLabel.RIGHT);
		JPanel jpb=new JPanel();
		jpb.add(jb1=new JButton("开始"));
		jpb.add(jb2=new JButton("暂停"));
		jpb.add(jb3=new JButton("重设"));
		jb2.setEnabled(false);
		jb3.setEnabled(false);
		jb1.addActionListener(this);
		jb2.addActionListener(this);
		jb3.addActionListener(this);
		this.setLayout(new BorderLayout());
		JPanel jp1=new JPanel(new BorderLayout());
		jp1.add(jpt,BorderLayout.CENTER);
		jp1.add(jpb,BorderLayout.SOUTH);
		this.add(display,BorderLayout.CENTER);
		this.add(jp1,BorderLayout.SOUTH);
	}
	public void run(){
		DecimalFormat de=new DecimalFormat("00");
		while(true){
			try{
				Thread.sleep(50);
			}
			catch(Exception e){
				JOptionPane.showMessageDialog(null,"出错啦"+e.toString(),"错误",
				JOptionPane.ERROR_MESSAGE);
			}
			if(run){
				out:for(int h=hour;h>=0;h--){
					for(int m=min;m>=0;m--){
						for(int s=sec;s>=0;s--){
						
							if(run){
							display.setText(de.format(h)+":"+de.format(m)+":"+de.format(s));
							hour=h;
							min=m;
							sec=s;
							}
							else
							break out;
								try{
								Thread.sleep(1000);
							}
							catch(Exception e){
									JOptionPane.showMessageDialog(null,"出错啦"+e.toString(),"错误",
				JOptionPane.ERROR_MESSAGE);
							}
						
							
						}
						sec=59;
					}
					min=59;
				}
				if(run){
					au.play();
						showDialog();
				run=false;
				jb2.setEnabled(false);
				}
			}
		}
	}
	
	public void actionPerformed(ActionEvent e){
		if(e.getSource()==jb1){
			out:try{
				int h=Integer.parseInt(jt1.getText().trim());
				int m=Integer.parseInt(jt2.getText().trim());
				int s=Integer.parseInt(jt3.getText().trim());
				if(h<0||m>59||m<0||s>59||s<0){
						JOptionPane.showMessageDialog(null,"您输入的值不在有效范围内\n"+
						"请重新输入","错误",JOptionPane.ERROR_MESSAGE);
						break out;
				}
				hour=h;min=m;sec=s;
				run=true;
				if(!th.isAlive())
				th.start();
				else
				run=true;
				jb1.setEnabled(false);
				jb2.setEnabled(true);
				jb3.setEnabled(true);
				jt1.setEditable(false);
				jt2.setEditable(false);
				jt3.setEditable(false);
			}
			catch(NumberFormatException nume){
					JOptionPane.showMessageDialog(null,"您输入了非法字符,\n请重新输入","错误",
				JOptionPane.ERROR_MESSAGE);
			}
		}
		else if(e.getSource()==jb2){
			if(e.getActionCommand()=="暂停"){
				run=false;
				jb2.setText("恢复");
			}
			else if(e.getActionCommand()=="恢复"){
				run=true;
				jb2.setText("暂停");
			}
		}
		else if(e.getSource()==jb3){
				run=false;
				display.setText("00:00:00");
				jb2.setEnabled(false);
				jb1.setEnabled(true);
				jb3.setEnabled(false);
				jt1.setEditable(true);
				jt2.setEditable(true);
				jt3.setEditable(true);
		}
	}
	private void showDialog(){
		final JDialog jd=new JDialog(new JFrame(),"到时间",true);
		final JLabel jl1;
		jl1=new JLabel("时间到");
		jl1.setHorizontalAlignment(JLabel.CENTER);
		jl1.setFont(new Font("楷体",Font.BOLD,33));
		JPanel jbt=new JPanel();
		JButton jb1=new JButton("确定");
		jbt.add(jb1);
		jl1.setHorizontalAlignment(JButton.CENTER);
		jb1.addActionListener(
			new ActionListener(){
				public void actionPerformed(ActionEvent e){
					jd.dispose();
					jd.setModal(false);
					jd.setAlwaysOnTop(false);
					jd.setVisible(false);
				
				}
			}
			);
		jd.addWindowListener(
			new WindowAdapter(){
				public void windowClosing(WindowEvent we){
					jd.dispose();
					jd.setModal(false);
					jd.setAlwaysOnTop(false);
					jd.setVisible(false);
				
				}
			}
			);
		jd.setLayout(new BorderLayout());
		jd.getContentPane().add(jl1,BorderLayout.CENTER);
		jd.getContentPane().add(jbt,BorderLayout.SOUTH);
		jd.setBounds(300,300,200,150);
		jd.setAlwaysOnTop(true);
		jd.setVisible(true);
	}
	public static void main(String args[]){
		JFrame j=new JFrame("测试");
		j.getContentPane().add(new DingshiPanel());
		j.setBounds(300,300,300,300);
		j.setVisible(true);
		j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -