Collapse pra swing - Urgente!

1 resposta
P

Olá, tenho um JTextArea que em determinado momento irá receber um texto com várias linhas.
Preciso colocar uma parte deste texto, dentro de um collapse (aquela propriedade para expandir/retrair o texto).
Acontece que não faço a minima ideia de como fazer isso… se alguem puder por favor ajude! Abraço!

1 Resposta

juno.rr

Olá.
Vc teria que iniciar uma Thread que diminui o tamanho do componente graduamente e vincular em um botão.

Algo mais ou menos assim:

public class Collapse extends Thread {
    public static int DELAY = 50;

    public static int SIZE = 2;

    private Component comp;

    public Collapse(Component c) {
        comp = c;
    }

    private void verticalCollapse(Dimension d) {
        if(!comp.isVisible()) return;

        if(d == null) d = comp.getSize();

        if(d.getHeight() <= 0) {
            d.setSize(d.getWidth(), 0);
            comp.setSize(d);
            comp.setVisible(false);
            return;
        }

        int height = d.getHeight() - SIZE;
        d.setSize(d.getWidth(), height);
        comp.setSize(d);

        Thread.sleep(DELAY);
        verticalCollapse(d);
    }

    public void run() {
        this.verticalCollapse(null);
    }

}

Eu não testei os valores de size e delay, então teria que ajustar para não ficar muito lento ou muito rápido.
Para tornar o componente visivel é só criar um método que faça o inverso e talvez uma variável boolean para implementar algo do tipo toggle.
Porém essa abordagem não funcionaria bem com um gerenciador de layout.

Abraço.

Criado 1 de julho de 2011
Ultima resposta 2 de jul. de 2011
Respostas 1
Participantes 2