Painel que faça Collapse

8 respostas
Danillo_Moreno

Pessoal, bom dia!

Tenho uma tela com varios paineis e outros componentes dentro dela, preciso que um desses componentes faça o famoso collapse, ou seja, tenho ao lado dele um botão que quando é pressionado o painel abre (ou melhor deveria abrir), os componentes abaixo dele deveriam se adaptar ao novo tamanho de tela e quando é pressionado novamente e se fecha…

Tentei colocar essa ação no botão, mas não deu muito certo não…

private void tgbMaisMenosActionPerformed(java.awt.event.ActionEvent evt) {
        int largura = (int) pnlSegundo.getSize().getWidth();
        if (tgbMaisMenos.isSelected()) {
            tgbMaisMenos.setText("-");
            jPanel1.add(pnlPrimeiro);
        } else {
            tgbMaisMenos.setText("+");
            jPanel1.remove(pnlPrimeiro);
        }
        SwingUtilities.updateComponentTreeUI(this);
        SwingUtilities.updateComponentTreeUI(pnlSegundo);
        SwingUtilities.updateComponentTreeUI(jPanel1);
    }

Se alguém puder me dar umas dicas eu agradeço…

Valeu…

8 Respostas

S

Então cara pelo que sei, realmente o swing nao tem collapse, mais se não me engano há uma extensão do swing (swingx https://swingx.dev.java.net/) que tem alguns componentes a mais, e um deles o collapse panel, vale a pena uma lida no projeto :wink:

Danillo_Moreno

silvet, valeu pela dica…

Baixei a demo e ele faz exatamente o que eu preciso…

Muito obrigado…

C

Criei um projeto chamado Japurá.
Aos poucos irei colocar outros componentes. O primeiro é justamente esse para collapse.
Se chama CollapsiblePanel. Se quiser usar está em http://sourceforge.net/projects/japura/

correainfo

cadu555:
Criei um projeto chamado Japurá.
Aos poucos irei colocar outros componentes. O primeiro é justamente esse para collapse.
Se chama CollapsiblePanel. Se quiser usar está em http://sourceforge.net/projects/japura/

cadu555 deu um exemplo utilizando o seu collapse.

Abaixei mais ficaria legal se vc post um exemplo de como utiliza-lo no sourceforge.

C

correainfo:
cadu555:
Criei um projeto chamado Japurá.
Aos poucos irei colocar outros componentes. O primeiro é justamente esse para collapse.
Se chama CollapsiblePanel. Se quiser usar está em http://sourceforge.net/projects/japura/

cadu555 deu um exemplo utilizando o seu collapse.

Abaixei mais ficaria legal se vc post um exemplo de como utiliza-lo no sourceforge.

Claro… ainda não atualizei o SF, nem coloquei o JavaDoc :frowning:

mas é simples o uso:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Insets;

import javax.swing.AbstractButton;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToggleButton;
import javax.swing.JTree;

import org.japura.gui.CollapsiblePanel;
import org.japura.gui.CollapsibleRootPanel;

public class Example2 {

  public static void main(String a[]) {
    JFrame f = new JFrame();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    CollapsibleRootPanel root = new CollapsibleRootPanel();

    CollapsiblePanel cp0 = new CollapsiblePanel("JTextField");
    JTextField field = new JTextField();
    cp0.setView(field);

    CollapsiblePanel cp1 = new CollapsiblePanel("JTextArea");
    JTextArea ta = new JTextArea(15, 30);
    ta.setMargin(new Insets(5, 5, 5, 5));
    cp1.setView(new JScrollPane(ta));
    cp1.setGradientEnabled(false);
    cp1.setBackground(new Color(130, 190, 240));

    JToggleButton b1 = new JToggleButton();
    b1.setPreferredSize(new Dimension(15, 15));
    JButton b2 = new JButton();
    b2.setPreferredSize(new Dimension(15, 15));
    AbstractButton[] bs = new AbstractButton[] { b1, b2 };
    CollapsiblePanel cp2 = new CollapsiblePanel(null, "JTree", bs);
    JTree tree = new JTree();
    tree.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    cp2.setView(tree);

    CollapsiblePanel cp3 = new CollapsiblePanel("JLabels");
    JPanel p = new JPanel(new GridLayout(5, 1));
    p.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    for (int i = 1; i <= 5; i++) {
      p.add(new JLabel("JLabel" + i));
    }
    cp3.setView(p);

    root.add(cp0);
    root.add(cp1);
    root.add(cp2);
    root.add(cp3);

    f.add(root);
    f.pack();
    f.setVisible(true);
  }

}
C

Pretendo finalizar o Javadoc e criar a opção de listeners ainda essa semana para poder finalizar esse componente.

ViniGodoy

Não bastaria usar um JSplitpane?

C

Ola,

são componentes diferentes. O CollapsiblePanel é igual aqueles paineis do painel de configuração do Windows. O painel “fecha” com animação e fica só o título. Também não existe o redimensionamento (hummm, quem sabe futuramente :slight_smile: )

Criado 18 de julho de 2008
Ultima resposta 16 de set. de 2008
Respostas 8
Participantes 5