JAVA实现名字用按钮按下后一直循环显示在 textArea里,直到按另一个按钮终止
1个回答
展开全部
使用 javax.swing.Timer;即可实现,定时去执行某一个任务的功能
随即产生的效果图
参考代码
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;
//本类继承自JFrame,实现了ActionListener接口
public class ButtonFrame extends JFrame implements ActionListener {
// 定义常量
public static final String[] NAMES = { "黄蓉", "小龙女", "东方不败", "阿珂", "任盈盈", "王语嫣", "周芷若" };
public static final String NEW_LINE = System.getProperty("line.separator"); // 获取当前系统换行符
public static final String INFO = "女神节快乐,随即抽取1人领取奖励.";
// 组件
JButton jbStart, jbClear;
JTextArea jta;
// 随即
Random random;
Timer t; // 定义一个计时器控件 javax.swing.Timer
int times = 0; // 刷新名字的次数
// 构造方法: 组件的初始化, 排版, 窗口的设置
public ButtonFrame() {
random = new Random();
jta = new JTextArea(INFO);
jta.setLineWrap(true);// 自动换行
JScrollPane jsp = new JScrollPane(jta, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
// 文本区域添加到滚动面板, 垂直滚动条需要的时候出现, 水平滚动条不需要.
add(jsp, BorderLayout.CENTER);
JPanel jps = new JPanel();
jbStart = new JButton("随即选择");
jbStart.addActionListener(this);// 添加事件处理
jbClear = new JButton("强制停止");
jbClear.addActionListener(this);
jps.add(jbStart);
jps.add(jbClear);
add(jps, BorderLayout.SOUTH);
setTitle("窗口");// 窗口标题
setSize(280, 220);// 窗口大小
setLocationRelativeTo(null);// 窗口居中
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 当窗口关闭时,程序结束
// 每隔100毫秒 执行一次actionPerformed的方法
t = new Timer(100, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
times++;
String str = INFO+NEW_LINE+"Bingo!\t" + NAMES[random.nextInt(NAMES.length)];
jta.setText(str);
if (times >= 10) { // 如果计时器循环了10次 ,那么停止计时器
t.stop();//停止计时器
times = 0;//次数归零
jbStart.setEnabled(true);//按钮恢复点击
}
}
});
}
// 处理按钮点击事件
public void actionPerformed(ActionEvent e) {
JButton jbTemp = (JButton) e.getSource();
if (jbStart == jbTemp) {// 随即
if (!t.isRunning()) {// 如果计时器没有运行,
jbStart.setEnabled(false);//按钮不可点击
t.start();//启动计时器
}
} else if (jbClear == jbTemp) {// 停止
// jta.setText(INFO);
if (t.isRunning()) {// 如计时器正在运行中,
t.stop();
times = 0;
jbStart.setEnabled(true);
}
}
}
public static void main(String[] args) {
new ButtonFrame().setVisible(true);// 实例化窗口并可见
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询