2014-10-13 2 views
0

У меня очень странная проблема: когда я запускаю программу, она создает JFrame и помещает ее в центр экрана (где я хочу), а затем сразу же ее слайд в левом нижнем углу экрана. Я использую Java 8 на Mac OSX 10.9, и мой код выглядит следующим образом. Как предотвратить его перемещение и почему он это делает?JFrame перемещается в левый нижний угол экрана

public static void main(String[] args) { 
    JFrame frame = new JFrame(); 
    JPanel panel = new JPanel(); 

    panel.setPreferredSize(new Dimension(640, 480)); 

    frame.setResizable(false); 
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 

    frame.add(panel); 
    frame.pack(); 

    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
} 
+0

try omitting: frame.setLocationRelativeTo (null); –

+1

@RayTayek: нет, это не проблема, так как это центрирует JFrame. Проблема существует в другом месте. –

+1

Тайлер, если вы хотите нашей помощи, я думаю, что вам нужно будет создать и опубликовать [mcve] (http://stackoverflow.com/help/mcve/). Проверьте ссылку, чтобы увидеть, что это значит, но по существу вы бы создали и опубликовали небольшую, на самом деле ** минимальную ** компилируемую и исполняемую программу, которую мы можем запустить, и которая демонстрирует вашу проблему для нас. –

ответ

0

Как вы уже знаете, это работает, когда вы экспортируете его, просто не в IDE. Я не знаю, почему это так. Однако проблему можно решить, переместив frame.setResizable(false) на номер frame.setVisible(true).

+0

Вот что было описано в комментариях выше, но поскольку это правда, я буду отмечать его как правильное, чтобы другие могли найти его более легко. Следует отметить, однако, что при этом JFrame начинает мигать (0, 0), прежде чем появляться в центре экрана. – Tyler

+0

Интересно; для меня это зеленая кнопка плюс. – Ontonator

Смежные вопросы