Проблема изменения размера полосы прокрутки JScrollpane - PullRequest
1 голос
/ 11 января 2010

У меня следующая проблема:

У меня есть JScrollPane с изображением.

Область прокрутки находится внутри JPanel вместе с другими компонентами, чтобы иметь возможность компоновки всего объекта с помощью BorderLayout (область прокрутки - это ЦЕНТР, и у меня есть что-то на Юге).

Этот JPanel находится в JSplitPane.

JSplitPane наконец-то находится внутри JFrame.

JFrame
{
 JSplitpane
 {
  JPanel(BorderLayout)
  {
   JScrollPane(CENTER)
   {
    BufferedImage
   }

   JPanel(SOUTH)
   {...}
  }
 }
}

Моя проблема сейчас заключается в том, что когда я изменяю размер своего кадра, изображение в области прокрутки изменяется в размерах до тех пор, пока не достигнет размера изображений. Затем растягивается изображение, которое я хочу предотвратить. Я попытался обернуть JScrollPane в JPanel, который является макетом с FlowLayout. Это прекрасно работает для бита изменения размера, но полосы прокрутки исчезают, когда я изменяю размер кадра.

Я переопределил метод setSize () scrollPane и обнаружил, что размер полосы прокрутки всегда устанавливается равным размеру изображения после изменения размера кадра. Я понятия не имею, как это исправить.

Каждый намек приветствуется.

Приветствия

Ben

1 Ответ

0 голосов
/ 11 января 2010

Полагаю, вам будет хорошо, если вы позвоните setMaximumSize() на JScrollPane с шириной / высотой BufferedImage (но не пробовали).

И в качестве общего комментария: плохая идея переопределять компоненты Swing просто для добавления дочерних элементов. Вместо этого создайте класс контроллера, который создает и создает базовые компоненты.


Я перечитал ваш вопрос и задаюсь вопросом: проблема в том, что изображение растягивается или полосы прокрутки исчезают? Если вы хотите сохранить полосы прокрутки на экране, даже когда прокручивать нечего, взгляните на методы setVerticalScrollBarPolicy() и setHorizontalScrollBarPolicy().

...