目的
使用图形化界面显示0~200的随机数,可以调节速度,可暂停
效果演示
代码
package henu;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;
public class Test {
public static void main(String []args){
new showRandom();
}
}
class showRandom extends JFrame implements ActionListener,Runnable{
JTextArea ta;
JButton btn_start,btn_interrupt,btn_fast,btn_mid,btn_slow;
JTextField spead;
Thread t;
JLabel label;
String currentSpead="中速"; //速度初始化为中速
public showRandom(){
super("变速随机数");
this.setSize(530,300);
this.setLocation(200,200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
ta=new JTextArea();
ta.setAutoscrolls(true);
this.add(ta);
//这里的按钮不太建议这么写,可以定义一个Button数组
btn_start=new JButton("启动");
btn_interrupt=new JButton("中断");
btn_fast=new JButton("快速");
btn_mid=new JButton("中速");
btn_slow=new JButton("慢速");
btn_start.addActionListener(this);
btn_interrupt.addActionListener(this);
btn_fast.addActionListener(this);
btn_mid.addActionListener(this);
btn_slow.addActionListener(this);
btn_interrupt.setEnabled(false);
label=new JLabel("当前速度:");
spead=new JTextField(10);
spead.setEditable(false);
JPanel panel=new JPanel();
panel.setLayout(new FlowLayout(0));
panel.add(btn_start);
panel.add(btn_interrupt);
panel.add(btn_fast);
panel.add(btn_mid);
panel.add(btn_slow);
panel.add(label);
panel.add(spead);
this.add(panel,BorderLayout.SOUTH);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==btn_start){
t=new Thread(this);
t.start();
btn_start.setEnabled(false);
btn_interrupt.setEnabled(true);
}
else if(e.getSource()==btn_interrupt){
t.interrupt();
btn_start.setEnabled(true);
btn_interrupt.setEnabled(false);
}
else if(e.getSource()==btn_fast){
currentSpead="快速";
}
else if(e.getSource()==btn_mid){
currentSpead="中速";
}
else if(e.getSource()==btn_slow){
currentSpead="慢速";
}
}
public void run(){
int i=1;
Random ran=new Random();
while(t.isAlive()&&!t.isInterrupted()){
String temp="";
temp=""+ran.nextInt(200);
if(i%5==0){
temp+="\n";
}
i++;
ta.append("\t"+temp);
try{
spead.setText(currentSpead);
if(currentSpead=="快速"){
Thread.sleep(100);
}
else if(currentSpead=="中速"){
Thread.sleep(400);
}
else{
Thread.sleep(800);
}
}catch(InterruptedException e){
break;
}
}
}
}
感谢观看!如果有错误,还望指正!!