2011-08-22 11 views
7

Utworzono JFrame, a próba uzyskania jego rozmiaru daje niepoprawny wynik w porównaniu do tego, czego się spodziewam.JFrame: Uzyskiwanie rzeczywistego rozmiaru zawartości

Ustaliłem, że obejmuje on obramowanie systemu operacyjnego wokół krawędzi oraz pasek tytułu.

Jak mogę uzyskać/ustawić rzeczywisty rozmiar, który mam do renderowania?

+1

Czy jesteś pewien, że to 'JPanel', a nie' JFrame'? Jeśli jest to drugie, użyj 'frame.getContentPane(). GetSize()'. Możesz również znaleźć [to pytanie] (http://stackoverflow.com/questions/2796775/setting-the-size-of-a-contentpane-inside-of-a-jame) przydatne ... –

+0

Och, przepraszam, tak, to był JFrame. Nie mogę uwierzyć, że je pomieszałem. Przepraszam, naprawiłem pytanie. –

+0

* "może to być spowodowane tym, że źle to sformułowałem" * Jest bardziej prawdopodobne, że całe twoje podejście jest błędne. Częściej zdarza się, że niestandardowy renderowany komponent pyta "jak duży jestem?". Na cokolwiek innego, układy powinny obsługiwać rozmiar automatycznie, bez aplikacji. kiedykolwiek pytając o wymiary lub rozmiary. –

Odpowiedz

5

Rozmiar, który otrzymujesz, to rozmiar zawartości i o rozmiarze insets. Jeśli używasz Jcomponent.getInsets(), możesz znaleźć rozmiar zawartości za pomocą prostego odejmowania.

+0

Dzięki, działa teraz :) –

2

Twoje pytanie jest mylące: JPanels nie mają belek tytułowych ani obramowań okien, są abstrakcyjnymi kontenerami, które znajdują się wewnątrz JFrames. JFrames są obiektami z paskiem tytułu i obramowaniem okna.

JPanel.getSize() powinien działać zgodnie z przeznaczeniem. Jednak w przypadku JFrames będziesz chciał użyć JFrame.getContentPane().getSize(), ponieważ getContentPane() zwraca JPanel (który jest faktycznym obszarem zawartości).

Powiązane problemy