Получите размеры области отображения JPanel, Windows против Mac - PullRequest
0 голосов
/ 22 марта 2019

У меня есть код, который генерирует JPanel, который должен работать как в среде Mac OSX, так и в среде Windows. Я хотел бы нарисовать серию прямоугольников, которые обрамляют область отображения JPanel. Однако область отображения JPanels отличается в двух средах. На приведенной ниже схеме Mac JPanel находится слева, а Windows JPanel - справа.

Mac vs Windows JPanels

Есть ли свойство, которое ссылается на область отображения JPanel, а не на его размер?

Два JPanel на диаграмме были сделаны с одинаковым кодом. В обоих случаях у меня есть следующая команда:

setSize(400, 400);

А в переопределении paintComponent крайний прямоугольник (обрезанный по вертикали, но только по горизонтали для окон) рисуется следующим образом:

g2.drawRect(0, 0, 399, 399);

(Внутренние прямоугольники смещены на 4 пикселя и меняются по цвету. Это не совсем то, что я надеюсь нарисовать, но это иллюстрирует проблему.)

Я мог бы вручную определить необходимые корректировки и создать отдельные константы для двух сред, но мне интересно, есть ли что-то, что я пропустил в Swing, где можно получить размер экрана для данной JPanel. Если такая функция или свойство существует, их использование будет более понятным и гибким, а также будет обеспечиваться хеджирование от JPanels, которым присвоены различные размеры строки заголовка или параметры заполнения.

1 Ответ

2 голосов
/ 22 марта 2019

В методе paintComponent() вашей панели вы используете:

int width = getWidth();
int height = getHeight();

Это даст вам текущий размер панели всякий раз, когда компонент перекрашивается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...