2013-08-06 3 views
0

Я разрабатываю приложение в Swing. Когда у меня подключено два монитора, приложение не будет отображаться. Значок появляется на боковой панели единицы, но окна нигде не видно.Приложение Swing не отображается в единстве, когда второй монитор находится слева

Я вернулся к истокам и побежал HelloWorldSwing.java от Oracle tuorials

http://docs.oracle.com/javase/tutorial/uiswing/examples/start/HelloWorldSwingProject/src/start/HelloWorldSwing.java

и та же проблема существует. Затем я обнаружил, что если я поставлю монитор 1 слева, HelloWorld появится в верхнем левом углу.

Как я могу получить HelloWorldSwing (и Swing-приложения в целом) для отображения в Unity, когда главный монитор находится справа?

Моя конфигурация дисплея: Монитор 1 (экран ноутбука) 1280x800 Monitor 2 ("неизвестный") 1440x900

Monitor 2 находится на левой стороне. У меня есть следующие в моем ~/.xprofile:

xrandr --newmode "1680x1050" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync 
xrandr --addmode VGA1 1680x1050 
xrandr --newmode "1440x900" 106.50 1440 1528 1672 1904 900 903 909 934 -hsync +vsync 
xrandr --addmode VGA1 1440x900 

ответ

0

Хорошо это просто, как

private static void createAndShowGUI() { 
    //Create and set up the window. 
    JFrame frame = new JFrame("HelloWorldSwing"); 
    frame.setLocation (50, 50); 
    ... 

setLocation справляется просто отлично с несколькими мониторами. Это просто, что местоположение по умолчанию (если setLocation не вызывается), кажется, выключено, когда монитор 2 остается.

0,0 находится в левом верхнем углу слева, как и ожидалось. Однако, если вы используете setLocation (0,0), кнопки закрытия/минимизации/максимизации окна закрываются верхним баром единства.

Я предполагаю, что некоторые компоненты, специфичные для платформы, должны интегрироваться с единственной верхней панелью/боковой панелью.

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

  • Нет связанных вопросов^_^