永发信息网

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

答案:2  悬赏:40  手机版
解决时间 2021-03-03 06:25
  • 提问者网友:记得曾经
  • 2021-03-03 01:39
1.需要计时器窗口有置顶功能
2.能显示时分秒
3.没有“清零”按钮,仅有开始和暂停按钮,并且能使用快捷键使用。
最佳答案
  • 五星知识达人网友:野味小生
  • 2021-03-03 01:48
好吧,已看到你的评论,我在这里再回答一次:
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);
    }
}
全部回答
  • 1楼网友:廢物販賣機
  • 2021-03-03 03:09
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); } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯