проблемы при получении данных из jframe - PullRequest
0 голосов
/ 01 мая 2020

Я пытался добавить значения в список внутри класса из отдельного jFrame. Я проверил и знаю, что информация отправляется правильно, и функция получения этой информации также получает ее правильно. Проблема в том, что я не уверен, что информация добавляется в список, потому что, когда я пытаюсь распечатать ее, ничего не происходит.


import java.util.ArrayList;

public class Conta {
    private int NumConta;
    private String Nome;
    private String RG;
    private String CPF;
    private double Saldo;
    private String Password;
    ArrayList<Conta> ListaUser;


    public Conta(){
        ListaUser = new ArrayList();
    }

    public Conta(int NumConta, String Nome, String RG, String CPF, double Saldo, String Password) {
        this.NumConta = NumConta;
        this.Nome = Nome;
        this.RG = RG;
        this.CPF = CPF;
        this.Saldo = Saldo;
        this.Password = Password;
        ListaUser = new ArrayList();
    }

    public int getNumConta() {
        return NumConta;
    }

    public void setNumConta(int NumConta) {
        this.NumConta = NumConta;
    }

    public String getNome() {
        return Nome;
    }

    public void setNome(String Nome) {
        this.Nome = Nome;
    }

    public String getRG() {
        return RG;
    }

    public void setRG(String RG) {
        this.RG = RG;
    }

    public String getCPF() {
        return CPF;
    }

    public void setCPF(String CPF) {
        this.CPF = CPF;
    }

    public double getSaldo() {
        return Saldo;
    }

    public void setSaldo(double Saldo) {
        this.Saldo = Saldo;
    }

    public String getPassword() {
        return Password;
    }

    public void setPassword(String Password) {
        this.Password = Password;
    }

    public ArrayList<Conta> getListaUser() {
        return ListaUser;
    }

    public void setListaUser(ArrayList<Conta> ListaUser) {
        this.ListaUser = ListaUser;
    }
    public void AddFunc(Conta C){
        ListaUser.add(C);
    }

}

Это класс, который получает информацию


import java.util.Random;
import javax.swing.JOptionPane;

public class Cadastrar extends javax.swing.JFrame {
    public Cadastrar() {
        initComponents();
    }
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jPanelinicio = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jTextFieldnomecadastro = new javax.swing.JTextField();
        jTextFieldRG = new javax.swing.JTextField();
        jTextFieldCPF = new javax.swing.JTextField();
        jTextFieldpasswordcadastro = new javax.swing.JTextField();
        jButtonconfirmarcadastro = new javax.swing.JButton();
        jButtonvoltarCadastrar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jPanelinicio.setBackground(new java.awt.Color(102, 153, 255));

        jPanel2.setBackground(new java.awt.Color(255, 255, 255));

        jLabel1.setText("RG:");

        jLabel2.setText("CPF:");

        jLabel3.setText("Nome:");

        jLabel4.setText("Password:");

        jButtonconfirmarcadastro.setText("Confirmar");
        jButtonconfirmarcadastro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonconfirmarcadastroActionPerformed(evt);
            }
        });

        jButtonvoltarCadastrar.setText("Voltar");
        jButtonvoltarCadastrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonvoltarCadastrarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel3)
                    .addComponent(jLabel1)
                    .addComponent(jLabel2)
                    .addComponent(jLabel4))
                .addGap(58, 58, 58)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jTextFieldpasswordcadastro, javax.swing.GroupLayout.PREFERRED_SIZE, 255, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTextFieldCPF, javax.swing.GroupLayout.PREFERRED_SIZE, 255, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTextFieldRG, javax.swing.GroupLayout.PREFERRED_SIZE, 255, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTextFieldnomecadastro, javax.swing.GroupLayout.PREFERRED_SIZE, 255, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(77, Short.MAX_VALUE))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jButtonconfirmarcadastro, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jButtonvoltarCadastrar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addGap(173, 173, 173))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(56, 56, 56)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(jTextFieldnomecadastro, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(47, 47, 47)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(jTextFieldRG, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(43, 43, 43)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(jTextFieldCPF, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(40, 40, 40)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel4)
                    .addComponent(jTextFieldpasswordcadastro, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(68, 68, 68)
                .addComponent(jButtonconfirmarcadastro)
                .addGap(18, 18, 18)
                .addComponent(jButtonvoltarCadastrar)
                .addContainerGap(28, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout jPanelinicioLayout = new javax.swing.GroupLayout(jPanelinicio);
        jPanelinicio.setLayout(jPanelinicioLayout);
        jPanelinicioLayout.setHorizontalGroup(
            jPanelinicioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        jPanelinicioLayout.setVerticalGroup(
            jPanelinicioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelinicioLayout.createSequentialGroup()
                .addGap(0, 117, Short.MAX_VALUE)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanelinicio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanelinicio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        );

        pack();
        setLocationRelativeTo(null);
    }// </editor-fold>                        

    private void jButtonvoltarCadastrarActionPerformed(java.awt.event.ActionEvent evt) {                                                       
        Principal principal = new Principal();
        principal.setVisible(true);           
        dispose();
    }                                                      

    private void jButtonconfirmarcadastroActionPerformed(java.awt.event.ActionEvent evt) {                                                         
        Random random = new Random();
        int numero = random.nextInt(9999999);
        Conta C = new Conta(numero,jTextFieldnomecadastro.getText(),jTextFieldRG.getText(),jTextFieldCPF.getText(),0,jTextFieldpasswordcadastro.getText());
        C.AddFunc(C);
        JOptionPane.showMessageDialog(this, "Conta criada com sucesso!\n"+"Numero da conta: "+numero);
        Principal p = new Principal();
        p.setVisible(true);
        dispose();
    }                                                        

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Cadastrar.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Cadastrar.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Cadastrar.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Cadastrar.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Cadastrar().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButtonconfirmarcadastro;
    private javax.swing.JButton jButtonvoltarCadastrar;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanelinicio;
    private javax.swing.JTextField jTextFieldCPF;
    private javax.swing.JTextField jTextFieldRG;
    private javax.swing.JTextField jTextFieldnomecadastro;
    private javax.swing.JTextField jTextFieldpasswordcadastro;
    // End of variables declaration                   
}

Этот jFrame отправляет информацию.

Как сделать так, чтобы список получал информацию, и как я могу видеть всю добавленную информацию?

Заранее спасибо

1 Ответ

1 голос
/ 01 мая 2020

Каждый Conta имеет свою собственную копию ListaUser, поэтому, когда вы делаете

Conta C = new Conta(...);
C.AddFunc(C);

, вы добавляете C к C собственной копии ListaUser и каждый Conta C будет содержать список ListaUser, который имеет только один элемент в списке; C сам. Иными словами, у каждого Conta будет список только с содержимым списка; нет списка, который содержит все созданных вами Conta.

Account (Conta) не должен быть местом, в котором ведется список ваших учетных записей. программа держится. Сама программа связана с учетными записями, поэтому у программы есть список учетных записей.

public class Cadastrar extends javax.swing.JFrame {
    private List<Conta> listaUser = new ArrayList<>();
    private Cadastrar program;

    public Cadastrar() {
        initComponents();
        program = this;
    }
    // etc.

Позже в программе в jButtonconfirmarcadastroActionPerformed, когда вы создаете Conta, вы добавляете ее в список программ

Conta c = new Conta(...);
program.listaUser.add(c);
// or possibly: program.storeConta(c);

В какой-то момент в вашей программе вы можете захотеть показать список, возможно, в ответ на другое нажатие кнопки, которое может выглядеть примерно так, если вы просто печатали на консоль ( Я не собираюсь писать здесь код для отображения его в JPanel или в любом другом виде)

// other methods that are in class Cadastrar
List<Conta> getContaList()
{
    return program.listaUser;
}

void listContas()
{
    for (Conta c : program.getContaList()) {
        System.out.println(c);
    }
}

Часто вы можете использовать this вместо сохранения отдельной переменной program

Замечание также, что я изменил регистр имен переменных ... это не жесткое правило, но в Java существует соглашение, что имена классов должны начинаться с верхнего регистра, как Conta, но имена переменных начинаются с нижнего регистра, как listaUser вместо ListaUser.

Я давно не занимался программированием на Swing, но это (или было?) Также обычная практика иметь объект Application , который отделен от ваш главный JFrame, так что у вас может быть такая договоренность ...

public class MyApplication
{
    // the Program owns the list, which the JFrame will use
    private static final List<Conta> listaUser = new ArrayList<>();
    // because we pass the list to the application window in `main`
    Cadastrar appWindow;

    public static void main(String... args)
    {
        // here is where you would do your LookAndFeel initialization,
        // and create an instance of your application's main window
        appWindow = new Cadastrar(listaUser);
        // obviously this sample code is incomplete, just to demonstrate
        // that your Program sets up the environment and creates the
        // main window which the User will interact with.
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...