Как установить JFrame, чтобы всегда быть в фокусе - PullRequest
3 голосов
/ 25 декабря 2011

Я хочу создать JFrame, который всегда имеет фокус и не может потерять фокус, пока он не будет закрыт, у меня уже установлено его всегда сверху, и я попробовал этот код:

import java.awt.event.*;
import javax.swing.*;

public class Viewer extends JFrame WindowFocusListener
{
    public Viewer()
    {
        addWindowFocusListener(this);
        setAlwaysOnTop(true);
        this.setFocusable(true);
        this.setFocusableWindowState(true);
        panel = new JPanel();

        setSize(WIDTH,HEIGHT);
        setLocation(X,Y);
        setResizable(false);
        setVisible(true);
    }

    public void windowGainedFocus(WindowEvent e){}
    public void windowLostFocus(WindowEvent e)
    {
        toFront();
        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 Viewer();}
}

Я нене понимаю, почему этот код не работает, кто-нибудь может увидеть, что я делаю не так?заранее спасибо.

1 Ответ

9 голосов
/ 25 декабря 2011

Это невозможно при простом JFrame; это работа для JDialog. Пожалуйста, посмотрите эти реализованные методы:

setModal ()

setModalityTypes ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...