Я должен найти точный размер экрана компонента в пикселях, когда основной JFrame изменен.
Я попробовал несколько вещей и не мог найти простой способ сделать это: это, вероятно, пропустило что-то очевидное.
BBBBB JFRAME BORDER BBB
BZZZZZZZZZZZZZZZZZZZZZB
BAAAAAAAAAAAAAAAAAAAAAB
BCC1................DDB
BCCC................DDB
BCCC................DDB
BCCC................DDB
BCCC................2DB
BEEEEEEEEEEEEEEEEEEEEEB
BBBBBBBBBBBBBBBBBBBBBBB
Измененный, это могло стать этим, если бы, скажем, пользователь сделал основной JFrame короче (вертикально) и шире (горизонтально):
BBBBBB JFRAME BORDER BBBBBB
BZZZZZZZZZZZZZZZZZZZZZZZZZB
BAAAAAAAAAAAAAAAAAAAAAAAAAB
BCC1....................DDB
BCCC....................2DB
BEEEEEEEEEEEEEEEEEEEEEEEEEB
BBBBBBBBBBBBBBBBBBBBBBBBBBB
То, что я хочу, должно найти точный размер в пикселях, на экране, прямоугольной области обозначенным точками.
Я добавляю a ComponentListener
получить события изменения размеров, который хорошо работает.
Проблема, которую я имею, - то, что вызов getWidth ()/getHeight () на Компоненте, по-видимому, не возвращает размер экрана компонента, но фактический размер компонента (и у Вас может быть, например, JPanel шире, чем компонент, который это в).
Любая приветствующаяся подсказка.
getWidth ()
и getHeight ()
возвращает ширину и высоту компонента. Я никогда не слышал о разнице между «фактической» шириной / высотой и «шириной / высотой экрана».
Однако некоторые менеджеры компоновки не заполняют панель содержащимся в ней компонентом, и некоторое пространство между компонентом и краем панели может не быть занято компонентом. В этом случае я обычно setBackground (Color.BLUE)
на нижней панели, чтобы увидеть, что происходит.
Это очень дрянной способ, но вы можете использовать панель-оболочку, куда вы помещаете свою основную панель. Затем вы можете вызвать getWidth ()
и getHeight ()
из панели оболочки.