Показать изображение на экране, не делая фокус других окон [дубликат]

Этот ответ подобен Дмитрию, но он будет содержать десятичные и положительные и отрицательные числа.

select * from table where col1 REGEXP '^[[:digit:]]+$'
76
задан OscarRyz 9 December 2008 в 05:28
поделиться

3 ответа

Попробуйте этот метод класса Window:

Window.setAlwaysOnTop (boolean)

Он работает так же, как и по умолчанию в Windows TaskManager: переключиться на другое приложение, но оно всегда отображается сверху.

Это было добавлено в Java 1.5

Пример кода:

import javax.swing.JFrame;
import javax.swing.JLabel;

public class Annoying {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Hello!!");

        // Set's the window to be "always on top"
        frame.setAlwaysOnTop( true );

        frame.setLocationByPlatform( true );
        frame.add( new JLabel("  Isn't this annoying?") );
        frame.pack();
        frame.setVisible( true );
    }
}

alt text [/g1]

Окно остается сверху, даже если оно не активно

139
ответ дан tstec 23 August 2018 в 21:06
поделиться
  • 1
    вы бы подумали, что простой поиск для «java-приложения всегда сверху» на это был бы ответ, но он не смог его найти. Благодарю. – Laplie Anderson 18 November 2008 в 15:21
  • 2
    Угадай, что. Теперь он делает !! :) Это приносит вам здесь! google.com/search?&q=java+application+always+on+top – OscarRyz 15 October 2009 в 01:07
  • 3
    Это просто и здорово. Я также искал что-то вроде этого, но не знал, что они реализовали это в Java 1.5. Спасибо за публикацию. – Kushal Paudyal 18 November 2009 в 23:43
  • 4
    К сожалению, это не работает для меня при запуске полноэкранного приложения, такого как видеоигра. Кто-нибудь знает, как заставить его подняться наверх в этой ситуации? – Dream Lane 5 May 2011 в 22:02
  • 5
    @Dream lane Я бы, наверное, попросил, чтобы в качестве нового вопроса – rogerdpack 13 May 2011 в 14:27

Из моего наблюдения я обнаружил, что привилегия AlwaysOnTop предоставляется самому последнему процессу, который просил всегда быть наверху.

Итак, если у вас есть приложение, которое setAlwaysOnTop(true), а затем другое приложение использует эту опцию , привилегия предоставляется второй заявке. Чтобы обойти это, я установил setAlwaysOnTop(false) и снова setAlwaysOnTop(true) всякий раз, когда какое-либо окно появляется поверх текущего окна.

Я проверил его с wordweb в windows. WordWeb - одно из приложений, которое использует параметр AlwaysOnTop из OS

. Я не уверен, правильно ли он работает с вашим игровым сценарием.

Предупреждение: m не знает о побочных эффектах.

Вот пример кода:

import java.awt.event.*;

import javax.swing.*;

public class MainWindow extends JFrame implements WindowFocusListener
{
    public MainWindow()
    {
        addWindowFocusListener(this);
        setAlwaysOnTop(true);
        this.setFocusable(true);
       // this.setFocusableWindowState(true);
        panel = new JPanel();
        //setSize(WIDTH,HEIGHT);
        setUndecorated(true);
        setLocation(X,Y);
        setExtendedState(MAXIMIZED_BOTH);
        setVisible(true);
    }

    public void windowGainedFocus(WindowEvent e){}
    public void windowLostFocus(WindowEvent e)
    {
        if(e.getNewState()!=e.WINDOW_CLOSED){
            //toFront();
            //requestFocus();
            setAlwaysOnTop(false);
            setAlwaysOnTop(true);
            //requestFocusInWindow();
            System.out.println("focus lost");
        }

    }

    private JPanel panel;
    private static final int WIDTH = 200;
    private static final int HEIGHT = 200;
    private static final int X = 100;
    private static final int Y = 100;

    public static void main(String args[]){
              new MainWindow();}
    }
10
ответ дан pinkpanther 23 August 2018 в 21:06
поделиться
  • 1
    Устанавливая его значение false и true снова, когда другое окно выходит сверху, это не похоже на работоспособное решение по одной простой причине - что, если другое приложение делает то же самое? – Trejkaz 13 April 2015 в 03:36
  • 2
    @Trejkaz Ну, это действительная точка. Теперь я больше не общаюсь с качелями. – pinkpanther 13 April 2015 в 07:39
  • 3
    Это отлично работает для моего использования! Первоначальное включение этого параметра было ложным. – rococo 21 November 2017 в 00:53

Не используйте setFullScreenWindow, просто получите размер экрана, а затем setSize, и все будет хорошо.

0
ответ дан X.Zhang 23 August 2018 в 21:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: