Окно приложения Java Swing исчезает при перемещении на другой экран/рабочий стол/дисплей в Mac OS X
Окно приложения Java Swing исчезает всякий раз, когда я перетаскиваю его с помощью мыши с одного монитора на другой. Это видно, пока я перетаскиваю его, но он сразу исчезает, когда я отпускаю кнопку мыши. Я бы предпочел, чтобы окно не исчезло. Почему он исчезает?
Когда я активирую Mission Control, окно Swing появляется внизу рабочего стола, где я его перетаскивал. Деактивация управления миссией приводит к тому, что он соскальзывает в нижней части экрана.
Не имеет значения, какое приложение Java Swing запускаю. Для тех, кто хочет код, здесь простое приложение Java Swing, демонстрирующее поведение, которое я описываю, наслаждаюсь:
import java.awt.*;
import javax.swing.*;
class SimpleSwing {
public static void main(final String... args) {
SwingUtilities.invokeLater(new Runnable() {
@Override public void run() {
JFrame frame = new JFrame();
JPanel contentPane = new JPanel();
contentPane.add(new JLabel("Hello World!"));
frame.setContentPane(contentPane);
frame.pack();
frame.setVisible(true);
}
});
}
}
Моя среда - это Oracle Java JDK (последняя на момент написания этой статьи) в Mac OS X Yosemite (последняя на момент написания этой статьи):
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
OS X Yosemite Version 10.10.2 (14C1510)
Darwin Kernel Version 14.1.0
Ответы
Ответ 1
Попробуйте следующее:
- Перейдите к Системные настройки > Дисплеи > Расположение
- Совместите два прямоугольника отлично
- Посмотрите, работает ли он.
- Если нет, измените порядок двух прямоугольников (и мониторы или подключите их по-разному)
Надеюсь, это поможет, но я не уверен, что это решение.
Ответ 2
Шаг: до frame.setVisible(true); вы можете добавить ниже двух строк кода, а затем снова проверить.
frame.setLocation(500, 500);
frame.setAlwaysOnTop(истина);