Pergunta

Eu tenho o seguinte problema:

Eu JScrollPane contendo uma imagem.

O scrollpane está dentro de um JPanel em conjunto com outros componentes, a fim de ser capaz de layout da coisa toda com um BorderLayout (o painel de rolagem é o centro e eu temos algo no sul).

Esta JPanel está em uma JSplitPane.

O JSplitPane está finalmente dentro de um JFrame.

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

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

O meu problema agora é que quando eu redimensionar o meu quadro a imagem no scrollpane redimensiona bem até que ele atinja o tamanho das imagens. Em seguida, a imagem é ampliada que eu quero evitar. Tentei envolver o JScrollPane em um JPanel que é layout com um FlowLayout. Esta coima trabalha para o bit redimensionamento mas as barras de rolagem desaparecem quando eu redimensionar o quadro.

I cancelou o método setSize do ScrollPane () e descobriu que o tamanho do painel de rolagem é sempre definido como o tamanho da imagem uma vez que o quadro é redimensionada. Eu não tenho idéia de como consertar isso embora.

Cada dica é apreciado.

Cheers,

Ben

Foi útil?

Solução

Eu acredito que você deve ser bom se você chamar setMaximumSize() na JScrollPane com a largura / altura do BufferedImage (mas ainda não tentei).

E, como um comentário geral: é uma má idéia de componentes Swing substituição apenas para adicionar filhos. Em vez disso, criar uma classe de controlador que cria e compõe componentes de base.


reli sua pergunta, e estou querendo saber: é o problema que a imagem fica esticada, ou que as barras de rolagem estão desaparecendo? Se você quiser manter as barras de rolagem na tela, mesmo quando não há nada para rolagem, dê uma olhada os métodos setVerticalScrollBarPolicy() e setHorizontalScrollBarPolicy().

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top