zoukankan      html  css  js  c++  java
  • 实验十四 线程设计

    1.源程序:

    package shiyan14;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import java.awt.event.KeyEvent;

    import java.awt.event.KeyListener;

    import java.util.Timer;

    import java.util.TimerTask;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JTextField;

    public class ShiYan14 extends JFrame{/*** */

    private static final long serialVersionUID = 1L;// 定义组件

    private JLabel lblTime;

    private JTextField txtInput;

    private JButton btnEnter;// 构造方法

    public ShiYan14(){// 设置窗体的相关属性

    super("ShiYan14");

    this.setSize(300,200);

    this.setLayout(null);

    this.setLocation(100,50);// 创建组件

    this.lblTime = new JLabel("请输入倒计时时间");

    this.lblTime.setBounds(30,20,200,30);

    this.txtInput = new JTextField();

    this.txtInput.setBounds(30,70,100,30);

    this.btnEnter = new JButton("确定");

    this.btnEnter.setBounds(150,70,70,30);// 给JTextField注册监听

    this.txtInput.addKeyListener(new KeyListener(){

    public void keyPressed(KeyEvent ke) {}

    public void keyReleased(KeyEvent )

     public void keyTyped(KeyEvent ke) {//

    tInput_KeyTyped(ke);

    }

    });// 给JButton注册监听

    this.btnEnter.addActionListener(new ActionListener(){

    public void actionPerformed(ActionEvent ae){

    btnEnter_ActionPerformed(ae);}});// 将各组件添加到窗体上

    add(lblTime);

    add(txtInput);

    add(btnEnter);// 显示窗体

    this.setVisible(true);}// 输入时的事件处理,控制用户只能输入数字

    public void txtInput_KeyTyped(KeyEvent ke){

    if(ke.getKeyChar() < '0' || ke.getKeyChar() > '9'){

    ke.setKeyChar('');

    }

    }// 点击按钮时的事件处理

    public void btnEnter_ActionPerformed(ActionEvent ae){// 获得用户输入的倒计时时间String strTime = this.txtInput.getText();

    if(strTime.equals("")){// 检测用户是否输入

    this.lblTime.setText("您尚未输入,请输入!");}

    else{Integer time = Integer.parseInt(strTime);// 创建线程

    TimeThread tt = new TimeThread(this.lblTime,time);

    tt.start();// 创建

    TimerTimer timer = new Timer();

    timer.schedule(new TimerTask(){// 启动其他程序

    public void run() {System.out.print("ok");

    }

    }, time * 1000);

    }

    }// 启动窗体

    public static void main(String[] args){

    new ShiYan14();

    }

    }// 时间线程类

    class TimeThread extends {

     private JLabel lblTime;

    private int time;// 构造方法传入,显示事件的JLabel和倒计时的时间。

    public TimeThread(JLabel lblTime, int time){

    this.lblTime = lblTime;this.time = time;

    }// run方法

    public void run(){

    while(time > 0){// 显示所剩时间

    this.lblTime.setText("所剩时间:" + time+"s");// 所剩时间减少

    time--;

    try {Thread.sleep(1000);

    }

    catch (InterruptedException e) {

    e.printStackTrace();

    }

    }

    }

    }

    2.实验心得

               本次实验对我来说难度较大,由于基础的一些知识没有熟练掌握,导致出现的问题较多,通过课本和一些搜索的知识解决了部分问题,但是大多难以理解。希望同学和老师能给予帮助。

  • 相关阅读:
    在Raspberry pi4上架设Minecraft1.17
    解决Android-x86在VMware中不能启动GUI的问题
    WMware player 16在超过两台显示器时的多显示器问题
    制动电阻的阻值和功率计算
    拉卡尼休在石块旷野
    在VirtualBox中调整Raspbian分辨率
    如何在VLC播放器中显示毫秒
    EXCEL高亮选中行/列
    Notepad++加强安全性检查,避免被CIA利用
    AutoCAD AutoLisp 脚本编写
  • 原文地址:https://www.cnblogs.com/wzl55/p/11111334.html
Copyright © 2011-2022 走看看