Заставьте панель задач окна мигать для JavaFX 2 Stage

Я разместил это на форумах Oracle, но не получил ответа, поэтому я пытаюсь здесь. Есть ли способ заставить панель задач окна для определенного этапа мигать? Я создаю клиент обмена мгновенными сообщениями и хочу, чтобы панель задач мигала при поступлении нового сообщения. Используя Swing JFrame, я мог добиться этого, просто вызвав setVisible(true); но этап JavaFX2 ведет себя иначе. Любая помощь или руководство будут высоко оценены. Спасибо.


person alscu    schedule 22.12.2011    source источник


Ответы (2)


Я не проверял это на всех системах, но на Win7, если вы запустите следующее приложение и измените фокус, оно будет мигать, вызывая Stage.toFront()

public class Blinker extends Application {

    @Override
    public void start(final Stage stage) throws Exception {
        stage.setTitle("i'll blink");
        stage.setScene(new Scene(new Group(new Text(25,25,"blink-blink"))));
        stage.show();

        TimelineBuilder.create().keyFrames(new KeyFrame(Duration.seconds(5), new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent t) {
                stage.toFront();
            }
        })).cycleCount(Timeline.INDEFINITE).build().play();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
person Sergey Grinev    schedule 22.12.2011
comment
Здравствуйте Сергей, Спасибо за ответ!. Знаешь, это не работает для меня. Я использую Windows 7 64 бит, jdk 1.7, javafx jdk 2.0.2 32 бит. Идея заключалась бы в том, что если сцена иконизирована, то toFront() заставит панель задач мигать, вместо того, чтобы вывести ее на передний план, верно? Единственный способ, который я нашел для этого, это if (!isFocused()){ hide(); } show(); Так что в основном, если пользователь пишет, ничего не происходит. А если его нет, то сцена скрывается и показывается, из-за чего панель задач мигает. Я учту ваше предложение на будущее. Спасибо. - person alscu; 23.12.2011
comment
Я вижу, может быть, это зависит от настроек Windows :) Рад, что вы нашли рабочее решение! - person Sergey Grinev; 23.12.2011

Я использовал ниже, и он отлично работает ..

if (! stage.isFocussed()){
stage.toFront();
}

person Mallik    schedule 21.05.2019