2015-04-12 3 views
0

Я не могу получить размер JFrame. JFrame был увеличен с помощью setExtendedState (MAXIMIZED_BOTH), и он также отображается.Невозможно получить размер ExtendedState JFrame

import javax.swing.JFrame; 

public class Fenster extends JFrame { 

    Fenster() { 

     this.setExtendedState(MAXIMIZED_BOTH); 
     this.setUndecorated(true); 
     this.setAlwaysOnTop(true); 
     this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     this.pack(); 
     this.setVisible(true); 
     System.out.println(this.getWidth() + " x " + this.getHeight()); 

    } 

} 

Я получаю только «0 x 0» или «1 x 1» в консоли. И я также не знаю, почему вывод случайный.

+0

Я получаю это правильно 1366 x 768. Я скопировал ваш код. – Yoda

+0

Я тестировал его с помощью JRE7-openjdk-7.u75_2.5.4-1 на Arch Linux с Gnome3. – LittleSatan

+0

* «Я не могу получить размер JFrame». * Почему вы хотите это измерение? См. [Что такое проблема XY?] (Http://meta.stackexchange.com/q/66377) –

ответ

0

Try:

int w = getSize().getWidth(); 
int h = getSize().getHeight(); 

Я не знаю, почему код не работает

+0

Я тоже пробовал это. Я также попробовал this.getContentPane(). GetSize(). GetHeight(), но он тоже не сработал. – LittleSatan

+0

Тогда это, вероятно, связано с тем, что вы назвали пакет без компонентов в кадр – TameHog

+0

Сначала я не использовал pack(). Но в другом вопросе о SO, кто-то написал, что мне нужно использовать pack() и setVisible (true), прежде чем я смогу получить размер. – LittleSatan

2

JFrame.pack() вызывается после того, как setExtendedState, который может изменить размер JFrame (другие комментарии не испытать этот вопрос , поэтому он может быть основан на среде). Я могу воспроизвести то, что вы наблюдаете на Mac, - если пакет() удален или setExtendedState вызывается после пакета(), поведение кажется более подходящим для того, что, я считаю, вам нужно.

+0

И если человек не добавляет никаких компонентов, тогда кадр устанавливается как можно меньше: 0x0 или 1x1 – TameHog

+0

True. Я надеялся, что это было главным образом для демонстрационных целей. даже с компонентом добавлено, что я наблюдаю, что, не перемещая вызов setExtendedState, размеры (например, полный экран) не возникают. – copeg

+0

Да, он должен переместить этот пакет() – TameHog

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