2 summer820228 summer820228 于 2015.07.21 22:38 提问

tf.setBounds(80,90, 200, 200); 把90改成91试试

import java.awt.*;
import java.awt.event.*;
import java.util.Random;

import javax.swing.*;

public class Three extends JFrame implements ActionListener{

/**
 * 
 */
private static final long serialVersionUID = -8560277451929244119L;
JTextField tf = new JTextField();
JButton b1 = new JButton("开始");
JButton b2 = new JButton("停止");
JButton b3 = new JButton("END");
boolean isGo = false;

public Three() {
    this.getContentPane().setLayout(null);
    this.setExtendedState(JFrame.MAXIMIZED_BOTH);

    tf.setBounds(80,90, 200, 200);
    b1.setBounds(1,100,10,10);
    b2.setBounds(1,200,10,10);
    b3.setBounds(1,300,10,10);

    this.getContentPane().add(tf);
    this.getContentPane().add(b1);
    this.getContentPane().add(b2);
    this.getContentPane().add(b3);



    b1.addActionListener(this);
    b2.addActionListener(this);
    b3.addActionListener(this);

    SymListener sy = new SymListener();
    b1.registerKeyboardAction(sy,KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); 
    b2.registerKeyboardAction(sy,KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); 
    b3.registerKeyboardAction(sy,KeyStroke.getKeyStroke(KeyEvent.VK_Q, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); 

    b2.setEnabled(false);

    this.setVisible(true);
    tf.setText("888888");
    go();

}    

public void go() {
    while (true) {
        if (isGo == true) {
            String s = "";

            for (int j = 1; j <= 1; j++) {
                int i = (int) (Math.random()*10000+1);//设定奖项总数
                if (i < 10) {
                    s = s + "00000" + i;
                } else if(i<100 & i>=10) 
                {
                    s = s + "0000" + i;
                }else if(i<1000 & i>=100) 
                {
                    s = s + "000" + i;
                }else if(i<10000 & i>=1000) 
                {
                    s = s + "00" + i;
                }else if(i<100000 & i>=10000) 
                {
                    s = s + "0" + i;
                }else
                {
                    s = s +  i;
                }

            }
            tf.setText(s);

        }

        try {
            Thread.sleep(10);
        } catch (java.lang.InterruptedException e) {
            e.printStackTrace();
        }

    }


}

public void actionPerformed(ActionEvent e) {

}

public static void main(String[] args)  {

    new Three();

} 
class SymListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
    Object obj = e.getSource();

    if (obj == b1) {
            isGo = true;
            b1.setEnabled(false);
            b2.setEnabled(true);
    } else if (obj == b2) {
        isGo=false;
        b2.setEnabled(false);
        b1.setEnabled(true);


    }else if (obj == b3) {
        dispose();

    }
    }
    }

}

3个回答

tongyi55555
tongyi55555   2015.07.21 23:04

我为什么要改呢?为什么呢?

summer820228
summer820228   2015.07.21 23:13

改后在按空格 看数字变不变 为什么不变了。 BUG吗? 如果把 KeyEvent.VK_SPACE, 换成别的快捷键就没问题

danielinbiti
danielinbiti   Ds   Rxr 2015.07.21 23:24
修改一
 //b1.registerKeyboardAction(sy,KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); //搜索这句,然后注释,增加下面,其他按钮也可以一样处理
 b1.getInputMap(JComponent.WHEN_FOCUSED).put(
         KeyStroke.getKeyStroke((char)KeyEvent.VK_SPACE), "PressKeyAction");
   b1.getActionMap().put("PressKeyAction", new AbstractAction() {
        public void actionPerformed(ActionEvent e) {
            isGo = true;
               b1.setEnabled(false);
               b2.setEnabled(true);
        }
       });
修改二
this.setVisible(true);
    tf.setText("888888");//搜索这句

    b1.requestFocus();//增加获取焦点
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
给对话框注册类名
用MFC写的对话框程序的默认类名是#32770,现在我要将这个类名改成自定义的类名(如:FSL的对话框)。在调用CreateWindow之前一般都进行RegisterClass的操作,就是说建立一个窗口实例前,得先将这个窗口类注册。其实MFC只是将这些操作封装在里面去了而以,原理上我们只要将RegisterClass(CONST WNDCLASS *lpWndClass)中的lpWndClas
HTTP状态码301、404、200、304
在网站建设的实际应用中,容易出现很多小小的失误,就像mysql当初优化不到位,影响整体网站的浏览效果一样,其实,网站的常规http状态码的表现也是一样,Google无法验证网站几种解决办法,提及到由于404状态页面设置不正常,导致了google管理员工具无法验证的情况,当然,影响的不仅仅是这一方面,影响的更是网站的整体浏览效果。因此,比较清楚详细的了解http状态码的具体含义,对于一个网站站长来说
输出100~200之间的素数
如果要输出一个素数,首先要判断它是不是素数。大家都知道素数是只能被1和它本身除尽的数,1既不是素数也不是合数,2是最小的素数同时也是唯一一个是偶数的素数,所以要判断一个数是不是素数,我想到了三种方法。  假设这个数为a  法一:让a依次和2到a-1相除,如果a不能被2到a-1之间的任何一个整数整除,则a为素数;  法二:让a依次和2到a/2相除,如果a不能被2到a/2之间的任何一个整数整除,则a为
输出1~200之间所有的素数
首先,1既不是素数也不是合数 方法一:简单方法 public class Prime { public static void main(String[] args) { //1既不是素数也不是合数 for (int i = 2; i <= 200; i++) { //外层被除数 boolean b = true; //假设初始时都为素数
Linux-C基础知识学习:C语言作业-把100~200之间的不能被3整除的数输出
Linux基础知识学习 C语言作业:把100~200之间的不能被3整除的数输出//把100~200之间的不能被3整除的数输出 #include <stdio.h> main(){ int i,count=0; printf("找出100~200之间的能被3整除的数···\n"); for(i=100;i<=200;i++) { if(i%3 != 0){ printf("%5d",i); coun
SqlServer2008修改编辑前200行
SqlServer2008中“编辑前200行”和“返回前1000行”在很多应用中很不方便,那么如何实现“编辑所有行”和“返回前所有行”或者自定义编辑行数和返回的行数呢?通过简单的几步即可实现。 具体方法为:Microsoft SQL Server Management Studio–工具–选项–SQL Server对象资源管理器–命令 把其中的“编辑前行命令的值”和“选择前行命令的值”都改
常见HTTP状态(200,304等等)
在网站建设的实际应用中,容易出现很多小小的失误,就像mysql当初优化不到位,影响整体网站的浏览效果一样,其实,网站的常规http状态码的表现也是一样,Google无法验证网站几种解决办法,提及到由于404状态页面设置不正常,导致了google管理员工具无法验证的情况,当然,影响的不仅仅是这一方面,影响的更是网站的整体浏览效果。因此,比较清楚详细的了解http状态码的具体含义,对于一个网站站长来说,这是很有必要俱备的网站制作基础条件。
输出100至200之间的所有素数
#include //输出100至200之间的所有素数 #include //加载数学函数文件 int main() { int n,i,k; for(n=101;n<=200;n++) { k=sqrt(n); //sqrt()是开根函数 缩小运算次数,因为当一个数的因数大于他的平方根时 另一个因数一定小于他的平方根 for(i=2;i<=k;i++)
实时错误‘91’
学生系统总结,实时错误“91”,警报,解决方法,数据库连接,SQL
HTTP的相应200与304的区别
Cache-Control策略 Cache-Control策略指明的是当前资源的有效期,控制浏览器缓存取数据还是重新发请求要服务器,其主要参数是max-age,即有效时间,以秒为单位,例如max-age,表明请求有效期为5分钟。 Last-Modified/If-Modified-SinceLast-Modified/If-Modified-Since要配合Cache-Control使用。 Last