滚动字幕的建立(事件的监听,定时器)

import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.Array;
import java.util.Arrays;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class RollbyJFrame extends JFrame {
public RollbyJFrame(String []text1){
super("滚动字幕");
setBounds(300,240,500,400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
if(text1==null||text1.length==0){
getContentPane().add(new RollbyJpanel("welcome"));
}
getContentPane().setLayout(new GridLayout(text1.length,1));
for(int i=0;i<text1.length;i++){
getContentPane().add(new RollbyJpanel(text1[i]));

}

setVisible(true);
}

public static void main(String[] args) {

String text[]={"welcome","湖南城市学院","你好"};
new RollbyJFrame(text);

}
}
class RollbyJpanel extends JPanel implements ActionListener, Runnable{
private JTextField textsleeptime,textstate,textfiled;
private JButton btnsleep,btnstop;
private int sleeptime;
private Thread thread;
public RollbyJpanel(String text){
setLayout(new GridLayout(2,1));
char []space=new char[150];
Arrays.fill(space,‘ ‘);
textfiled=new JTextField(text+new String(space));
add(textfiled);

JPanel panel=new JPanel(new FlowLayout(FlowLayout.LEFT));
add(panel);
panel.add(new JLabel("sleep"));
sleeptime=(int)(Math.random()*100);
textsleeptime=new JTextField(""+sleeptime,5);
panel.add(textsleeptime);
textsleeptime.addActionListener(this);

btnsleep=new JButton("启动");
panel.add(btnsleep);
btnsleep.addActionListener(this);

btnstop=new JButton("中断");
panel.add(btnstop);
btnstop.addActionListener(this);

panel.add(new JLabel("state"));
textstate=new JTextField("AAA",10);
textstate.setEditable(false);
panel.add(textstate);

}
public void run() {
while(true){
String str=textfiled.getText();
str=str.substring(1)+str.substring(0,1);
textfiled.setText(str);
try{
Thread.sleep(sleeptime);
}
catch(InterruptedException e){
break;
}

}
}

public void actionPerformed(ActionEvent e) {
if(e.getSource()==btnsleep){
int res=processSleeptime();
if(res==1){
return;
}
thread=new Thread(this);
thread.start();
btnsleep.setEnabled(false);
btnstop.setEnabled(true);
textstate.setText( ""+thread.getState());
}
if(e.getSource()==btnstop){
thread.interrupt();
btnstop.setEnabled(false);
btnsleep.setEnabled(true);
textstate.setText(""+thread.getState());

}
if(e.getSource()==textsleeptime){
processSleeptime();
}
}

private int processSleeptime(){
try{
sleeptime =Integer.parseInt(textsleeptime.getText());
return 0;}
catch(NumberFormatException e1){
JOptionPane.showMessageDialog(this, "\""+textsleeptime.getText()+"\"不能输入睡眠时间,必须是整数");
return 1;
}

}

}

时间: 2024-12-30 21:05:07

滚动字幕的建立(事件的监听,定时器)的相关文章

鼠标滚轮事件的监听

鼠标滚轮事件的监听原理:判断鼠标滚轮的滚动获取一个值,根据这个值判断滚动的方向.分析:首先,判断滚轮方向.Firefox:detail,取值为-/+3(负值向上,正值向下):其他:wheelDelta,取值为+/-120(正值向上,负值向下).兼容所有浏览器的的封装: ? 1 2 3 4 5 6 7 8 9 10 function scrollEvent(ev){     ev = ev || window.event;     var data = '';     if(ev.wheelDel

【laravel】Eloquent 模型事件和监听方式

所有支持的模型事件 在 Eloquent 模型类上进行查询.插入.更新.删除操作时,会触发相应的模型事件,不管你有没有监听它们.这些事件包括: retrieved 获取到模型实例后触发 creating 插入到数据库前触发 created 插入到数据库后触发 updating 更新到数据库前触发 updated 更新到数据库后触发 saving 保存到数据库前触发(插入/更新之前,无论插入还是更新都会触发) saved 保存到数据库后触发(插入/更新之后,无论插入还是更新都会触发) deleti

Java Swing界面编程(24)---事件处理:键盘事件及监听处理

在Swing的事件处理中也可以对键盘的操作进行监听,直接使用KeyListener接口即可. package com.beyole.util; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import javax

Java Swing界面编程(25)---事件处理:鼠标事件及监听处理

如果想对一个鼠标的操作进行监听,如果鼠标按下.松开等,则可以使用MouseListener接口. package com.beyole.util; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import

Java Swing界面编程(22)---事件处理:动作事件及监听处理

要想让一个按钮变得有意义,就必须使用事件处理.在swing的事件处理中,可以使用ActionListener接口处理按钮的动作事件. package com.beyole.util; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter

Android开发之PullToRefresh的Click点击事件的监听实现长按删除Item

本文为原创博客,出自http://blog.csdn.net/minimicall 到今天为止,搜芽的卖家版本应该来说已经基本完成,攻坚克难的一路过来.速度也控制的比较好. 项目过程进度 从任务分配量上来看,基本还是我个人英雄主义.接下来这样不行.但暂时也没办法,师弟还需要一个学习的过程.智质不错,而且态度端正.相信搜芽买家,他就可以承担更多的开发任务了. 接下来进入正题,说我们的PullToRefresh的点击事件.其实,我是想做长按进入删除的. 见效果图.当然这个是我做出来之后的了,但做出来

js对事件的监听方法addEventListener()

<script type="text/javascript"> (function($){ window.addEventListener("click",function(evt){ for(var i in evt) { console.log(i + "---" + evt[i]); } },false); })(jQuery);</script> 在这个点击事件的监听里,我们可以获取鼠标的点击坐标

node.js的事件发射监听机制

process也是emitter的一个实例.可以在程序中直接使用. // 监听1 process.on("aa", function(data,state) { console.log('监听1'); console.log(data + ':' + state); }); // 事件1 process.emit("aa", '发射', '事件1'); // 监听2 process.on("aa", function(data,state) {

js事件绑定/监听

事件绑定/监听的方法 1.直接绑定 顾名思义,直接在DOM元素上绑定onclick.onmouseover.onmouseout.onmousedown.onmouseup.ondblclick.onkeydown.onkeypress.onkeyup等事件 var ul = document.getElementById('ul') console.log(ul) ul.onclick = function() { console.log('click 事件绑定成功') } 这种方法最简单,也

Javascript:DOM事件(监听鼠标点击/释放,鼠标悬停/离开等)

使用Javascript可以对HTML页面上的各种事件进行监听,如鼠标点击/释放,鼠标悬停/离开,等等. 代码整理自w3school:http://www.w3school.com.cn 效果图: 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <