Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,每x秒更改一次焦点按钮_Java - Fatal编程技术网

在java中,每x秒更改一次焦点按钮

在java中,每x秒更改一次焦点按钮,java,Java,我正在寻找做以下事情的最佳方法。如果有人能给我指出正确的方向,我会非常高兴 我有5个按钮 Button 1 Button 2 Button 3 Button 4 Button 5 我希望每5秒按钮的焦点向下移动一个。因此,应用程序启动,按钮1具有焦点。然后5秒钟后,按钮2聚焦,依此类推,直到按钮5,然后返回到按钮1。当我说焦点时,我的意思是如果按下空格键,按钮就会被按下。任何协助都将不胜感激。谢谢您可以使用java swing计时器完成此任务。看看oracle文档中的示例 您可以使用java

我正在寻找做以下事情的最佳方法。如果有人能给我指出正确的方向,我会非常高兴

我有5个按钮

Button 1
Button 2
Button 3
Button 4
Button 5

我希望每5秒按钮的焦点向下移动一个。因此,应用程序启动,按钮1具有焦点。然后5秒钟后,按钮2聚焦,依此类推,直到按钮5,然后返回到按钮1。当我说焦点时,我的意思是如果按下空格键,按钮就会被按下。任何协助都将不胜感激。谢谢

您可以使用java swing计时器完成此任务。看看oracle文档中的示例


您可以使用java swing计时器执行此任务。看看oracle文档中的示例


您可以创建休眠5秒的线程,然后唤醒并将焦点设置为“下一步”按钮。将按钮存储在数组中

final int n = 5;
final int TIMEOUT = 5000;
Button[] buttons = new Button[n];
// fill the array

new Thread() {
    for (i = 0;  ;  i < n ? i++ : i = 0) {
        buttons.requestFocusInWindow();
        try {
            Thread.sleep(TIMEOUT);
        } catch(InterruptedException e) {}
    }
}.start();
final int n=5;
最终int超时=5000;
按钮[]按钮=新按钮[n];
//填充数组
新线程(){
对于(i=0;i

您还可以使用
java.util.Timer

创建休眠5秒的线程,然后唤醒并将焦点设置为next按钮。将按钮存储在数组中

final int n = 5;
final int TIMEOUT = 5000;
Button[] buttons = new Button[n];
// fill the array

new Thread() {
    for (i = 0;  ;  i < n ? i++ : i = 0) {
        buttons.requestFocusInWindow();
        try {
            Thread.sleep(TIMEOUT);
        } catch(InterruptedException e) {}
    }
}.start();
final int n=5;
最终int超时=5000;
按钮[]按钮=新按钮[n];
//填充数组
新线程(){
对于(i=0;i

您还可以使用
java.util.Timer

您也可以使用KeyboardFocusManager进行此操作。下面的示例代码使用java.util中的计时器对象。下面的代码每500毫秒更改一次焦点

    final KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();

    Timer timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {

        public void run() {
            manager.focusNextComponent();
        }

    }, 0, 500);

希望这能有所帮助。

您也可以使用KeyboardFocusManager进行此操作。下面的示例代码使用java.util中的计时器对象。下面的代码每500毫秒更改一次焦点

    final KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();

    Timer timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {

        public void run() {
            manager.focusNextComponent();
        }

    }, 0, 500);
希望这有帮助