实验十四 线程设计

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(‘\0‘);

}

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

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.实验心得

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

原文地址:https://www.cnblogs.com/wzl55/p/11111334.html

时间: 2024-08-29 14:52:00

实验十四 线程设计的相关文章

实验十四 Swing图形界面组件

实验十四  Swing图形界面组件 实验时间 20178-11-29 1.实验目的与要求 (1) 掌握GUI布局管理器用法: (2) 掌握各类Java Swing组件用途及常用API: 2.实验内容和步骤 实验1: 导入第12章示例程序,测试程序并进行组内讨论. 测试程序1 在elipse IDE中运行教材479页程序12-1,结合运行结果理解程序: 掌握各种布局管理器的用法: 理解GUI界面中事件处理技术的用途. 在布局管理应用代码处添加注释: 测试结果: 这个程序是一个网格布局,网格布局像一

实验十六 线程技术

实验十六  线程技术 实验时间 2017-12-8 1.实验目的与要求 (1) 掌握线程概念: (2) 掌握线程创建的两种技术: (3) 理解和掌握线程的优先级属性及调度方法: (4) 掌握线程同步的概念及实现技术: 2.实验内容和步骤 实验1:测试程序并进行代码注释. 测试程序1: l 在elipse IDE中调试运行ThreadTest,结合程序运行结果理解程序: l 掌握线程概念: l 掌握用Thread的扩展类实现线程的方法: l 利用Runnable接口改造程序,掌握用Runnable

Packet Tracer 5.2实验(十四) 网络地址转换NAT配置

Packet Tracer 5.2实验(十四) 网络地址转换NAT配置 一.实验目标 理解NAT网络地址转换的原理及功能: 掌握静态NAT的配置,实现局域网访问互联网: 二.实验背景 公司欲发布WWW服务,现要求将内网Web服务器IP地址映射为全局IP地址,实现外部网络可访问公司内部Web服务器. 三.技术原理 网络地址转换NAT(Network Address Translation),被广泛应用于各种类型Internet接入方式和各种类型的网络中.原因很简单,NAT不仅完美解决了IP地址不足

【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十四:储存模块

实验十四比起动手笔者更加注重原理,因为实验十四要讨论的东西,不是其它而是低级建模II之一的模块类,即储存模块.接触顺序语言之际,“储存”不禁让人联想到变量或者数组,结果它们好比数据的暂存空间. 1. int main() 2. { 3. int VarA; 4. char VarB; 5. VarA = 20; 6. VarB = 5; 7. } 代码14.1 如代码14.1所示,主函数内一共声明两个变量VarA与VarB(第3~4行).VarA是两个字节的整型变量,VarB是一个字节的字符变量

实验十四:线程设计

源代码: package 多线程; import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel; public class XianCheng extends JFrame{ JButton jButto

CCNA实验十四 STP之冗余备份链路(EtherChannel)

环境: Windows XP .GNS3.0.7.VPCS.exe 目的:学习如何配置冗余备份链路. 步骤: 1.打开GNS创建下面工程: 说明: (1)  首先要为SW1和SW2两台虚拟设备添加交换模块 (2)  记下两台设备的console端口号:SW1: 2002 ,SW2: 2003 (3)  配置PC1和PC2与VPCS关联起来,使用相对应虚拟机的端口号即可(注:RPORT与LPORT) 2.配置SW1,打开cmd输入"telnet 127.0.0.1 2002"登录到SW1

王爽&lt;&lt;汇编语言&gt;&gt; 实验十四

1 ;以"年/月/日 时:分:秒"的格式, 显示当前的日期, 时间 2 assume cs:code 3 code segment 4 main: 5 mov al,9 6 out 70h,al ;告诉CMOS RAM将要访问的存储单元编号 7 in al,71h ;从该存储单元中读入数据 8 9 mov ah,al 10 mov cl,4 11 shr al,cl 12 add al,30h ;显示的年份的十位的ascii码 13 and ah,00001111b 14 add ah

汇编语言(王爽 第三版)实验十四

assume cs:code code segment s1: db 9,8,7,4,2,0 s2: db 'yy/mm/dd hh:mm:ss','$' start: mov ax,cs mov ds,ax mov si,offset s1 mov di,offset s2 mov cx,6 s: push cx mov al,ds:[si] out 70h,al in al,71h mov ah,al mov cl,4 shr ah,cl and al,00001111b add ah,30

【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十五:FIFO储存模块(同步)

实验十五:FIFO储存模块(同步) 笔者虽然在实验十四曾解释储存模块,而且也演示奇怪的家伙,但是实验十四只是一场游戏而已.至于实验十五,笔者会稍微严肃一点,手动建立有规格的储存模块,即同步FIFO.那些看过<时序篇>的同学一定对同步FIFO不会觉得陌生吧?因为笔者曾在<时序篇>建立基于移位寄存器的同步FIFO.不过那种同步FIFO只是用来学习的玩具而已.因此,这回笔者可要认真了! 事实告诉笔者,同步FIFO的利用率远胜其它储存模块,几乎所有接口模块都会出现它的身影.早期的时候,笔者