QQ网名大全

J**A实现名字用按钮按下后一直循环显示在 textArea里,直到按另一个按钮终止

使用 j**ax.swing.Timer;即可实现,定时去执行某一个任务的功能
随即产生的效果图
参考代码
import j**a.awt.*;import j**a.awt.event.*;import j**a.util.Random;import j**ax.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;定义一个计时器控件 j**ax.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);实例化窗口并可见
}
}
佚名
2024-05-31 21:18:34
最佳回答
类似问题(10)