Olá… estou voltando aos meus velhos projetos de Java2D e tenho um JPanel que funciona como uma tela para se desenhar e fica dentro de um JScrollPane.
O caso é que não quero limitar o tamanho. Até agora eu havia deixado os atributos minimum/maximum/preferred/size iguais… mas agora só vou deixar o minimum setado e quero aumenta-lo e com isso o JScrollPane deve modificar as ScrollBars…
O que eu tentei é pegar o getSize() e setar o novo com o valor do velho + 100 nas duas propriedades (height e width).
Queria saber como é possivel obter esse resultado.
Se for necessario eu coloco código ou mais informações.
Obrigado.
Quem controla o tamanho do ScrollPane é a propriedade PreferredSize. Você pode simplesmente trocar esse atributo e o JPanel mesmo se encarrega de atualizar as scrolls.
Agora, se vc está implementando um panel “no braço” para algum jogo (ou algo parecido), e precisa de um controle realmetne fino do que será redesenhado, dê uma olhada na interface Scrollable e nesse texto aqui:
http://java.sun.com/docs/books/tutorial/uiswing/components/scrollpane.html
Isso é apenas para o MapBuilder… acho não é necessario implementar tudo do Scroll.
Vou postar aqui as partes que acho necessario.
EditPanel
public EditPanel() throws FileNotFoundException {
setMinimumSize(new Dimension(ViewMap.MAP_COLS * ViewMap.TILE_SIZE,
ViewMap.MAP_ROWS * ViewMap.TILE_SIZE));
setPreferredSize(getMinimumSize());
}
protected void enlarge() {
Dimension d = getPreferredSize();
setPreferredSize(new Dimension(d.width + 100, d.height + 100));
}
O construtor(parte dele) e o método para crescer.
meu jscrollpane esta com tamanho maximo de ViewMap.MAP_COLS * ViewMap.TILE_SIZE,
ViewMap.MAP_ROWS * ViewMap.TILE_SIZE
O método enlarge é chamado, e com System.out.println vi que a Dimension esta mudando. Mas o JScrollPane não atualiza as JScrollBars que continuam do mesmo tamanho.
PS:ViniGodoy, quando eu tiver algo interessante eu gostaria que voce analizasse o código do jogo. Ou voce está muito ocupado?
A partir de quinta estarei de férias… 8)
Pode mandar o código do jogo no meu e-mail.