Как сделать так, чтобы длина и ширина JPanel расширялись автоматически? - PullRequest
2 голосов
/ 31 января 2012

У меня есть JScrollPane, и внутри него я поместил JPanel. Также есть кнопка, при нажатии которой будет нарисован прямоугольник произвольной длины и ширины. на панели. Поэтому при каждом нажатии этой кнопки вызывается метод перерисовки JPanel.

Проблема в том, что иногда длина прямоугольника велика, и поэтому JPanel не отображает все это, а только часть, которая уже помещается на панели.

Как сделать так, чтобы JPanel отображал то, что нарисовано внутри него, каковы размеры прямоугольника?

Ответы [ 2 ]

2 голосов
/ 31 января 2012

Один из вариантов - нарисовать прямоугольник на Graphics объекте BufferedImage аналогичных размеров, а затем использовать это изображение в качестве Icon для JLabel.Добавьте эту метку на панель в произвольных координатах, а затем revalidate the JScrollPane и выполните запрос repaint.

1 голос
/ 31 января 2012

ваш ScrollPane ограничивает размер, панель по умолчанию растягивается, чтобы вместить его дочерние компоненты.ScrollPane исправлена, поэтому она называется ScrollPane, то, что вы можете сделать, это программно рассчитать размер прямоугольника и перекрасить scrollpane с этим размером при каждом нажатии кнопки или, что еще лучше, вы должны знать возможные размеры и сделать свой графический интерфейс соответствующимдостаточно, чтобы компенсировать все такие размеры.

...