Java сделать JFrame "оставаться на месте" - PullRequest
4 голосов
/ 14 марта 2012

Есть ли способ заставить фрейм Java-приложения оставаться там, где я его отображаю, с помощью .setLocation? Я хочу отключить возможность его перемещения по экрану пользователем.

Ответы [ 4 ]

3 голосов
/ 14 марта 2012

Вот как вы можете предотвратить перемещение JFrame. Не рекомендуется использовать это в производственном приложении, потому что это раздражает пользователей и вызывает другие ошибки, когда пользователь пытается мин / макс фрейм.

public static void main(String args[]) throws Exception {
class JFrameTypeLocking extends JFrame {
    Point locked=null;
    public JFrameTypeLocking(String string) {
        super(string);
        super.addComponentListener(new ComponentAdapter(){
            public void componentMoved(ComponentEvent e) {
                if (locked!=null) JFrameTypeLocking.this.setLocation(locked);
            }});
    }
    public void lockLocation() {
        locked=super.getLocation();
    }
}
JFrameTypeLocking f = new JFrameTypeLocking("");
f.setSize(300,300);
f.setLocation(300,300);
f.setVisible(true);
f.lockLocation();
}
3 голосов
/ 14 марта 2012

Вы можете создать поток демона, который проверяет, перемещен ли фрейм и возвращает ли он его туда, где он был?

2 голосов
/ 14 марта 2012

Вы не можете «запретить» перемещение JFrame.Это часть системного графического интерфейса;лучшее, что вы можете сделать, это добавить ComponentListener в JFrame и вернуть его на прежнее место при его перемещении.

Я думаю, визуальные эффекты довольно забавны при этом.

0 голосов
/ 14 марта 2012

Это что-то вроде хака, но вы можете сделать это на весь экран.Невозможно переместить полноэкранное приложение.

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