Как сделать JFrame неподвижным?
Эта проблема
Я хотел бы знать, можно ли сделать JFrame
не движимый / перетаскиваемый - просто из любопытства, а не для реального случая использования. Проблема в том, что оконный менеджер операционной системы отвечает за внешний вид окон, но сама программа имеет только несколько возможных настроек. Вот почему я ищу взломать.
Что я пробовал
- убрал украшение
JFrame
как указано в этом ответе (однако, все еще возможно перемещать окно, например, удерживая клавишу ALT в GNU/Linux) - установить
ComponentListener
который сбрасывает позицию, еслиJFrame
перемещается (однако, это выглядит очень затруднительно, так как слушатель реагирует только после перетаскивания, ноJFrame
должен всегда оставаться на одной позиции) - создал полный экран
JFrame
, сделал его прозрачным и добавилJPanel
для имитации окна (однако его можно перетаскивать, даже если оно развернуто) - использовал
JWindow
иJDialog
вместо этого (также не работает)
Есть ли способ достичь желаемого поведения, используя другой подход или улучшив один из моих подходов?
1 ответ
private void formComponentMoved(java.awt.event.ComponentEvent evt) {
this.setLocationRelativeTo(null);
}
addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentMoved(java.awt.event.ComponentEvent evt) {
formComponentMoved(evt);
}
});
Работает для меня.