繁体   English   中英

在Java中每隔X秒更改焦点按钮

[英]Change focused button every x seconds in java

我正在寻找执行以下操作的最佳方法。 如果有人能指出我正确的方向,我会很高兴。

我有5个按钮

Button 1
Button 2
Button 3
Button 4
Button 5

我想发生的是,按钮的焦点每5秒钟向下移动一个。 因此,该应用程序启动,并且按钮1具有焦点。 然后5秒钟后,按钮2进行聚焦,依此类推,直到按钮5,然后返回按钮1。当我说聚焦时,我的意思是如果按下空格键,将按下该按钮。 任何援助将不胜感激。 谢谢

您可以使用Java Swing计时器执行此任务。 看一下oracle docs中的示例

http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html

您可以创建一个可以休眠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();

您也可以使用java.util.Timer

您也可以为此使用KeyboardFocusManager。 下面的示例代码使用java.util中的Timer对象。 下面的代码每500毫秒更改一次焦点。

    final KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();

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

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

    }, 0, 500);

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM