Susgestão de uso de componente visual[Resolvido]

4 respostas
V

Olá pessoal, estou desenvolvendo um sistema que ele vai importar dados do banco de dados e com isso eu terei que criar uma interface visual semelhante a de programas de instalação no qual terá que aparecer várias janelas onde o usuário poderá avançar ou voltar…
a minha dúvida é qual a melhor forma de fazer isto em java, pensei em usar o padrão de layout CardLayout, também pensei em utilizar o JLayreadPane, alguém poderia me dar uma sugestão??? :smiley:

4 Respostas

E

Use um CardLayout mesmo.
Os botões Next, Previous, Finish etc. ficam em um painel separado.

E

Exemplo:

package guj;

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.border.SoftBevelBorder;

public class ExemploInstalador extends JFrame {

    private static final long serialVersionUID = 1L;
    private JPanel jContentPane = null;
    private JPanel pnlPrincipal = null;
    private JPanel pnlBotoes = null;
    private JButton btnProximo = null;
    private JButton btnAnterior = null;
    private JButton btnFinalizar = null;
    private JButton btnCancelar = null;
    private JPanel pnlTela1 = null;
    private JPanel pnlTela2 = null;
    private JLabel lblExemplo1 = null;
    private JCheckBox chkExemplo2 = null;

    private JPanel getPnlPrincipal() {
        if (pnlPrincipal == null) {
            pnlPrincipal = new JPanel();
            pnlPrincipal.setLayout(new CardLayout());
            pnlPrincipal.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
            pnlPrincipal.add(getPnlTela1(), getPnlTela1().getName());
            pnlPrincipal.add(getPnlTela2(), getPnlTela2().getName());
        }
        return pnlPrincipal;
    }

    private JPanel getPnlBotoes() {
        if (pnlBotoes == null) {
            FlowLayout flowLayout = new FlowLayout();
            flowLayout.setAlignment(FlowLayout.RIGHT);
            pnlBotoes = new JPanel();
            pnlBotoes.setLayout(flowLayout);
            pnlBotoes.add(getBtnAnterior(), null);
            pnlBotoes.add(getBtnProximo(), null);
            pnlBotoes.add(getBtnFinalizar(), null);
            pnlBotoes.add(getBtnCancelar(), null);
        }
        return pnlBotoes;
    }

    private JButton getBtnProximo() {
        if (btnProximo == null) {
            btnProximo = new JButton();
            btnProximo.setText("Próximo >");
            btnProximo.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    // Exemplo do que pode ser feito (chavear para a tela 2)
                    ((CardLayout)pnlPrincipal.getLayout()).show(pnlPrincipal, "tela2");
                }
            });
        }
        return btnProximo;
    }

    private JButton getBtnAnterior() {
        if (btnAnterior == null) {
            btnAnterior = new JButton();
            btnAnterior.setText("< Anterior");
            btnAnterior.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    // Exemplo do que pode ser feito (chavear para a tela 1)
                    ((CardLayout)pnlPrincipal.getLayout()).show(pnlPrincipal, "tela1");
                }
            });
        }
        return btnAnterior;
    }

    private JButton getBtnFinalizar() {
        if (btnFinalizar == null) {
            btnFinalizar = new JButton();
            btnFinalizar.setText("Finalizar");
        }
        return btnFinalizar;
    }

    private JButton getBtnCancelar() {
        if (btnCancelar == null) {
            btnCancelar = new JButton();
            btnCancelar.setText("Cancelar");
        }
        return btnCancelar;
    }

    private JPanel getPnlTela1() {
        if (pnlTela1 == null) {
            lblExemplo1 = new JLabel();
            lblExemplo1.setText("Tela 1");
            pnlTela1 = new JPanel();
            pnlTela1.setLayout(new FlowLayout());
            pnlTela1.setName("tela1");
            pnlTela1.add(lblExemplo1, null);
        }
        return pnlTela1;
    }

    private JPanel getPnlTela2() {
        if (pnlTela2 == null) {
            pnlTela2 = new JPanel();
            pnlTela2.setLayout(new FlowLayout());
            pnlTela2.setName("tela2");
            pnlTela2.add(getChkExemplo2(), null);
        }
        return pnlTela2;
    }

    private JCheckBox getChkExemplo2() {
        if (chkExemplo2 == null) {
            chkExemplo2 = new JCheckBox();
            chkExemplo2.setText("Tela 2");
        }
        return chkExemplo2;
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                ExemploInstalador thisClass = new ExemploInstalador();
                thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                thisClass.setVisible(true);
            }
        });
    }

    public ExemploInstalador() {
        super();
        initialize();
    }

    private void initialize() {
        this.setSize(453, 245);
        this.setContentPane(getJContentPane());
        this.setTitle("Exemplo Tosco de Instalador");
    }

    private JPanel getJContentPane() {
        if (jContentPane == null) {
            jContentPane = new JPanel();
            jContentPane.setLayout(new BorderLayout());
            jContentPane.add(getPnlPrincipal(), BorderLayout.CENTER);
            jContentPane.add(getPnlBotoes(), BorderLayout.SOUTH);
        }
        return jContentPane;
    }

}  //  @jve:decl-index=0:visual-constraint="10,19"


V

Obrigado entanglement ajudou muito :smiley: vou usar este msm…

S

Olá amigo

dê uma olhada em:

http://oswing.sourceforge.net/

baixe o penswing e na pasta: OpenSwing2.1.8/srcdemo/demo14

tem um exemplo.

Boa sorte

Silvio


Criado 30 de junho de 2010
Ultima resposta 1 de jul. de 2010
Respostas 4
Participantes 3