📄 dingshipanel.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 + -