永发信息网

JAVA需要一条秒表计时器代码

答案:2  悬赏:40  手机版
解决时间 2021-03-03 06:25
1.需要计时器窗口有置顶功能
2.能显示时分秒
3.没有“清零”按钮,仅有开始和暂停按钮,并且能使用快捷键使用。
最佳答案
好吧,已看到你的评论,我在这里再回答一次:
1)你所说的置顶如果是属于悬浮窗效果,那么JFrame实例化后,再添加一行如下的代码:
form1.setAlwaysOnTop(true);// 总是允许窗口置顶2)时分秒更简单了,除一除转转换就行了,没有技术含量。

3)快捷键通过JButton类的setMnemonic方法实现
So,综上,整个程序的实现算法如下:
package hky.example;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.*;
import java.util.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.plaf.OptionPaneUI;


public class Demo{
    static boolean isRuning=false;
    static boolean isFirst=true;
    static Integer hmsCounter=0;
    static int hour,minute,second;

    @SuppressWarnings("unchecked")
    public static void main(String[] args) throws Exception {

        JFrame form1 = new JFrame("Form1");
        form1.setAlwaysOnTop(true);// 1)总是允许窗口置顶

        JTextField jTextField = new JTextField(10);
        jTextField.setSize(10, 10);
        jTextField.setText("0");
        jTextField.setEditable(false);

        JButton jButton = new JButton("开始");
        jButton.setSize(10, 10);


        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    while(isRuning){
                     ++hmsCounter; 
                     //3)时分秒显示
                     hour=hmsCounter/3600;
                     minute=hmsCounter%3600/60;
                     second=hmsCounter%60;
                        jTextField.setText(hour+"时"+minute+"分"+second+"秒");
                        try {Thread.sleep(1000);} catch (Exception e2) {}
                    }
                    try {Thread.sleep(200);} catch (Exception e2) {}// 修复上一次回答的版本可能会存在的Bug
                }
            }
        });

        jButton.setMnemonic(KeyEvent.VK_ENTER);// 2)给JButton发送 Alt+Enter快捷键
        jButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
               String text=jButton.getText().equals("开始")?"暂停":"开始";
               jButton.setText(text);
               isRuning=!isRuning;
               if(isFirst){
                   thread.start();
                   isFirst=false;
               }
            }
        });

        JPanel panel = new JPanel();
        panel.setSize(200, 200);
        panel.add(jTextField, BorderLayout.NORTH);
        panel.add(jButton, BorderLayout.CENTER);
        form1.add(panel);
        form1.setBounds(200, 100, 250, 150);
        form1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        form1.addWindowListener(new WindowListener() {
            @Override
            public void windowOpened(WindowEvent e) {
                // TODO Auto-generated method stub

            }

            @Override
            public void windowIconified(WindowEvent e) {
                // TODO Auto-generated method stub

            }

            @Override
            public void windowDeiconified(WindowEvent e) {
                // TODO Auto-generated method stub

            }

            @Override
            public void windowDeactivated(WindowEvent e) {
                // TODO Auto-generated method stub

            }

            @Override
            public void windowClosing(WindowEvent e) {
               // 窗口关闭前取出文本框的数字保存到外部文件,代码在此处写
                JOptionPane.showMessageDialog(null, "Are you sure closing?");
            }

            @Override
            public void windowClosed(WindowEvent e) {
                // TODO Auto-generated method stub

            }

            @Override
            public void windowActivated(WindowEvent e) {
                // TODO Auto-generated method stub

            }
        });

        form1.setVisible(true);
    }
}
全部回答
import java.awt.*; public class clock { private int hour; private int minute; private int second; public clock(){ } public clock(int hrs,int min,int sec){ hour =hrs % 12; minute = min; second = sec; } void show (graphics g,int cx,int cy,int rad){ int hourlenght = (int)(rad * 0.5);//时针的长度 int minutelenght = (int)(rad * 0.6);//分针的长度 int secondlenght = (int)(rad * 0.9);//秒针的长度 double angle;//角度 //画出钟面 g.drawoval(cx-rad, cy - rad, rad * 2, rad * 2); //画出时针 angle = (double)(hour*60*60 + minute*60 + second)/43200.0*2.0*math.pi; drawniddle(g,color.blue, cx, cy, hourlenght,angle); //画分针 angle = (double)(minute*60 + second)/3600 * 2.0 * math.pi; drawniddle(g,color.blue, cx, cy, minutelenght,angle); // 画秒针 angle = (double)(second)/60*2.0*math.pi; drawniddle(g,color.blue, cx, cy, secondlenght,angle); } private void drawniddle(graphics g ,color c,int x,int y,int len,double angle){ int ex = (int)(x + len * math.sin(angle)); int ey = (int)(y - len * math.cos(angle)); g.setcolor(c); g.drawline(x,y,ex,ey); } } ----------------clocktest1.java--------------------- import javax.swing.*; import java.awt.*; import java.util.*; public class clocktest1 extends jframe{ private clock clock ; private date timenow; public clocktest1(){ super("时钟"); setsize(400,400); setvisible(true); } public void paint(graphics g){ super.paint(g); timenow = new date(); clock = new clock(timenow.gethours(),timenow.getminutes(),timenow.getseconds()); clock.show(g,170,150,100); try{ //for(int i =0 ; i <10 ; i += 10) thread.sleep(1000); }catch(interruptedexception e){ } repaint(); } public static void main(string[] args) { // todo 自动生成方法存根 clocktest1 appication = new clocktest1(); appication.setdefaultcloseoperation(jframe.exit_on_close); } }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
2019年黄冈同步训练六年级语文上册人教版答案
信用卡报销金额为50元什么意思
易结婚礼在哪里啊,我有事要去这个地方
古代把老处男叫什么
收到注册受理通知书的商标能否使用
联想笔记本电脑一键恢复后电脑上自己打的文件
12分之7乘14分之3等于多少
水与铁管哪个导电速度快
罗能加什么偏旁
幸福糕点屋这个地址在什么地方,我要处理点事
如何弄坏苹果5手机
肚子突然变胖,是胃胀气还是什么
【4寸】二寸,三寸,四寸水管的内径分别是多少
洙溪村在什么地方啊,我要过去处理事情
怎样才能包一束漂亮的鲜花
推荐资讯
梦幻西游卡69满修满宝石需要多少rmb
怎么让扑克牌飞起来
【商谈】政治商谈存在的复杂问题包括()。
3G无线上网卡网速怎么样
新动力学校魏公村总校怎么去啊,有知道地址的
更合东出口在什么地方啊,我要过去处理事情
陈字怎么写连笔好看
大沥中盈广场坐车到最近地铁站怎么走
广东哪里有海德汉德马吉五轴编程培训的机构
老婆和邻居二十年前有来往,那是我婚后第三年
我们老家到夏天树上有一种昆虫,大约小手指那
12V 20W 究竟消耗多少电量?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?