Então, o método cadastro seria o main dela, pra inicializar a janela.
vou enviar as classes mais completas pra você analisar.
public class Index {
private JFrame frame;
private JLabel lblCpf;
private JFormattedTextField cpfField;
private JLabel lblPassword;
private JPasswordField passwordField;
private JButton btnSair;
private JButton btnLogin;
private JButton btnCadastrar;
protected static final Index window = new Index();
private Controle controle;
/**
* Launch the application.
*
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*
* @wbp.parser.entryPoint
*/
private void initialize() {…}
/// sets and gets dos componentes
private JButton getBtnLogin() {
if (btnLogin == null) {
btnLogin = new JButton("Login");
btnLogin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
login();
}
});
}
return btnLogin;
}
private JButton getBtnCadastrar() {
if (btnCadastrar == null) {
btnCadastrar = new JButton("Cadastrar");
btnCadastrar.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
// Torna a view index invisivel e inicializa a tela de cadastro.
frame.setVisible(false);
Cadastro.cadastro(getControle());
}
});
}
return btnCadastrar;
}
public void login() {
// Verifica os dados de login com a lista de usuarios cadastrados.
String cpf = getTextFieldCpf().getText();
char[] senhaChar = getPasswordField().getPassword();
String senha = new String(senhaChar);
for (Usuario usuario : getControle().getUsuarios()) {
//Comparando os campos digitados com os usuários cadastrados.
if (usuario.getSenha().equals(senha) && usuario.getCpf().equals(cpf)) {
getControle().setLoggedUser(usuario);
break;
}
}
if (getControle().getLoggedUser() != null) {
boolean estacionado = false;
for (Veiculo veiculo : getControle().getLoggedUser().getVeiculos()) {
if (veiculo.isEstacionado()) {
getControle().getLoggedUser().setSelectedVeiculo(veiculo);
estacionado = true;
break;
}
}
//Verifica qual sera a proxima tela.
if (estacionado) {
LogadoEstacionado.logadoEstacionado(getControle());
} else {
LogadoNaoEstacionado.logadoNaoEstacionado(getControle());
}
// torna a tela index invisivel.
frame.setVisible(false);
} else {
JOptionPane.showMessageDialog(null, "Usuario não cadastrado.", "Erro de login!",
JOptionPane.WARNING_MESSAGE);
}
}
public Controle getControle() {
if(controle == null)
controle = new Controle();
return controle;
}
// A partir do btnCadastrar ou btnLogin, ele chama torna o index invisivel e chama a proxima classe, passando o controle instanciado como parametro.
public class Cadastro extends JFrame implements Iview {
private JPanel contentPane;
private JLabel lblDadosPessoais;
private JLabel lblNome;
private JTextField textFieldNome;
private JLabel lblCpf;
private JFormattedTextField textFieldCpf;
private JLabel lblCnh;
private JFormattedTextField textFieldCnh;
private JLabel lblEndereo;
private JLabel lblRua;
private JLabel lblComplemento;
private JLabel lblCep;
private JLabel lblBairro;
private JTable table;
private JLabel lblCidade;
private JLabel lblEstado;
private JTextField textFieldRua;
private JTextField textFieldComplemento;
private JFormattedTextField textFieldNumero;
private JFormattedTextField textFieldCep;
private JTextField textFieldBairro;
private JTextField textFieldCidade;
private JComboBox comboBoxEstado;
private JButton btnCadastrar;
private JButton btnVoltar;
private JButton btnVeiculos;
protected final static Cadastro frame = new Cadastro();
private JLabel lblN;
private JLabel lblSenha;
private JPopupMenu popUpCadastroVeiculo;
private JPasswordField textFieldSenha;
private static Controle controle;
/**
* Launch the application.
*
* @param controle2
*/
public static void cadastro(Controle controle) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
setControle(controle);
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Cadastro() {…}
/// + get’s e set’s
public static Controle getControle() {
return controle;
}
public static void setControle(Controle controle) {
if(Cadastro.controle == null)
Cadastro.controle = controle;
}
private JButton getBtnCadastrar() {
if (btnCadastrar == null) {
btnCadastrar = new JButton("Cadastrar");
btnCadastrar.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
save();
cleanValues();
}
});
}
return btnCadastrar;
}
public void save() {
String validacao = validateValues();
// verifica se houve algum erro na validação.
if (validacao == null) {
assignValues(); // cria o objeto usuario.
cleanValues();
String[] args = null;
frame.setVisible(false); // set tela cadastro invisivel.
Index.main(args); // Retorna pro metodo index.
JOptionPane.showMessageDialog(null, "Cadastro realizado com sucesso!", "WARNING",
JOptionPane.WARNING_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "Preencha todos os campos: \n " + validacao, "WARNING",
JOptionPane.WARNING_MESSAGE);
}
}
public void assignValues() {
// Cria o objeto conforme os campos informados pelo usuário na tela.
Usuario usuario = new Usuario();
usuario.setNome(getTextFieldNome().getText());
char[] senhaChar = getTextFieldSenha().getPassword();
String senha = new String(senhaChar);
usuario.setSenha(senha);
usuario.setCpf(getTextFieldCpf().getText());
// usuario.setCnh(getTextFieldCnh().getText());
// usuario.setRua(getTextFieldRua().getText());
// usuario.setNum(Integer.parseInt(getTextFieldNumero().getText()));
// usuario.setBairro(getTextFieldBairro().getText());
usuario.setEstado(getComboBoxEstado().getName());
if (getTextFieldComplemento().getText().length() > 0) {
usuario.setComplemento(getTextFieldComplemento().getText());
}
if (getTextFieldCidade().getText().length() > 0) {
usuario.setCidade(getTextFieldCidade().getText());
}
usuario.setVeiculos(CadastroVeiculo.getVeiculos());
getControle().addUsuarios(usuario); // aqui seria onde eu passaria o obj usuário pra classe controle, onde contem esse array.
}
// classe controle.
public class Controle {
private List estacionamento;
private List usuarios;
private Date date = new Date();
private Usuario loggedUser;
public List<Estacionamento> getEstacionamento() {
return estacionamento;
}
public void setEstacionamento(Estacionamento estacionamento) {
this.estacionamento.add(estacionamento);
}
public List<Usuario> getUsuarios() {
if(usuarios == null) {
usuarios = new ArrayList<Usuario>();
}
return usuarios;
}
public void addUsuarios(Usuario usuario) {
if(usuarios == null) {
usuarios = new ArrayList<Usuario>();
}
this.usuarios.add(usuario);
}
public void removeUsuario(Usuario usuario) {
this.usuarios.remove(usuario);
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public void criarUsuario() {
}
public void removerUsuario() {
}
public void escreverLog() {
}
public void lerLog() {
}
public Usuario getLoggedUser() {
return loggedUser;
}
public void setLoggedUser(Usuario loggedUser) {
this.loggedUser = loggedUser;
}
}
Desculpa se estiver insistindo no erro, realmente sou novato com o windowBuilder. Nessa sugestão que você deu, caso eu deva seguir, como faria pra alternar entre as telas?