简体   繁体   English

公共 Class 从 ArrayList 一无所获

[英]Public Class in getting nothing from ArrayList

I'm working on a GUI for a programming exercise.我正在开发一个用于编程练习的 GUI。 What I expect the GUIs to do is that CLASSTEST2 would add items in an ArrayList ( arrayList1 ) on a button click and another GUI ( CLASSTEST1 ) would print the first item in that arraylist and the arraylist itself through a public void function printArrayList () in CLASSTEST1 . What I expect the GUIs to do is that CLASSTEST2 would add items in an ArrayList ( arrayList1 ) on a button click and another GUI ( CLASSTEST1 ) would print the first item in that arraylist and the arraylist itself through a public void function printArrayList printArrayList () in CLASSTEST1的 1 。

The problem is that, when I call or run the function that prints the things said above, it shows that the arrayList is empty and it throws an IndexOutOfBoundsException even though items are already added on the arraylist.问题是,当我调用或运行打印上述内容的 function 时,它显示 arrayList 是空的,即使项目已经添加到 ZEB3A834246F50C9BDE8Z2C8 上,它也会引发 IndexOutOfBoundsException。 Is there something I'm missing?有什么我想念的吗?

CLASSTEST1:第一类:

public class CLASSTEST1 extends javax.swing.JFrame {
    public CLASSTEST1() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jButton1.setText("jButton1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(146, 146, 146)
                .addComponent(jButton1)
                .addContainerGap(177, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(128, 128, 128)
                .addComponent(jButton1)
                .addContainerGap(140, Short.MAX_VALUE))
        );

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

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        CLASSTEST2 classTest2 = new CLASSTEST2();
        System.out.print(classTest2.arrayList1.get(0));
    }                                        

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new CLASSTEST1().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    // End of variables declaration  

CLASSTEST2:第 2 类:

import java.util.ArrayList;

/**
 *
 * @author Private
 */
public class CLASSTEST2 extends javax.swing.JFrame {

    ArrayList arrayList1 = new ArrayList();
    public CLASSTEST2() {
        initComponents();
    }


    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        addToArrayListTEXT = new javax.swing.JTextField();
        addToArrayListBTN = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        addToArrayListBTN.setText("jButton1");
        addToArrayListBTN.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                addToArrayListBTNActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(82, 82, 82)
                        .addComponent(addToArrayListTEXT, javax.swing.GroupLayout.PREFERRED_SIZE, 169, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(122, 122, 122)
                        .addComponent(addToArrayListBTN)))
                .addContainerGap(90, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(86, 86, 86)
                .addComponent(addToArrayListTEXT)
                .addGap(18, 18, 18)
                .addComponent(addToArrayListBTN)
                .addContainerGap(140, Short.MAX_VALUE))
        );

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

    private void addToArrayListBTNActionPerformed(java.awt.event.ActionEvent evt) {                                                  
       arrayList1.add(addToArrayListTEXT.getText());
      
    }                                                 
    
    public void printArrayList (){
        System.out.println(arrayList1.get(0));
        System.out.println(arrayList1);
    }
   
    /**
     * @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(CLASSTEST2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(CLASSTEST2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(CLASSTEST2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(CLASSTEST2.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 CLASSTEST2().setVisible(true);
            }
        });
    }

These small classes are just a representation of a problem I have encountered on a larger project, but I cant post it here because it's too big, but this question and classes pretty much sums it up.这些小类只是我在一个较大项目中遇到的一个问题的代表,但我不能在这里发布它,因为它太大了,但是这个问题和类几乎总结了它。

Similar to the ArrayList in CLASSTEST2, you need to make the CLASSTEST2 instance a member of CLASSTEST1, and not create a new one everytime:与CLASSTEST2中的ArrayList类似,需要使CLASSTEST2实例成为CLASSTEST1的成员,而不是每次都新建一个:

public class CLASSTEST1 extends javax.swing.JFrame {

    private CLASSTEST2 classTest2;

    private void initComponents() {
      
       classTest2 = new CLASSTEST2();
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        System.out.print(classTest2.arrayList1.get(0));
    }   

    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            classtest2.setVisible(true);
        }
    });
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM