java - 在 ArrayList 中插入具有不同值的对象

标签 java object arraylist

我有一个 JFrame,在其中插入一些信息,我将这些信息发送到一个名为“宏”的对象。当我点击 JButton 时,“宏”会插入到 ArrayList 中,称为“listaJFP”。当我输入第一个信息(如名称“Murilo”,id“1”)并点击按钮时,我的 ArrayList 收到正确的信息,但是当我尝试插入另一个名称(如“Joao”,id“2”)时,我的 ArrayList 在第一个索引 [0] Joao, 2 和第二个索引 [1] Joao, 2 中接收。而不是 [0]Murilo,1 和 [1]Joao,2。我寻找这个问题,我看到有人在谈论对象的引用,换句话说,当我更改对象“宏”的值时,同时更改我的ArrayList的值。有人能帮助我吗 ?感谢您的关注!

这是在我的 JFramePrincipal 类中:

Macro macro = new Macro();

private List<Macro> listaJFP = new ArrayList<Macro>();

这是在我的 JButton actionPerformed 中:

listaJFP.add(macro);

JFrameTabela jfT = new JFrameTabela(listaJFP);

我会尝试添加更多代码:

public class JFramePrincipal extends javax.swing.JFrame {

private List<Macro> listaJFP = new ArrayList<Macro>();
Macro macro = new Macro();
String[] arrayNodeName;
String[] listaVelocidade = new String[]{"1024", "1984"};
String[] listaSlot = new String[]{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"};
String[] listaModule86x0 = new String[]{"0", "1"};
String[] listaModule8609 = new String[]{"3", "4"};
String[] listaPort = new String[]{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"};
String[] listaPortFeGe = new String[]{"0", "1", "2", "3", "4", "5", "6", "7"};
String[] nodeType = new String[]{"8609", "8630", "8660"};

 private void jButtonGerarMacroActionPerformed(java.awt.event.ActionEvent evt) {                                                  
    try {
        if (jCheckBoxFSP.isSelected() == true) {
            macro.setVpnName(jFormattedTextFieldFSP.getValue().toString());
        } else if (jCheckBoxSP.isSelected() == true) {
            macro.setVpnName(jFormattedTextFieldSP.getValue().toString());
        }

        macro.velocidade = jComboBoxVelocidade.getSelectedItem().toString();

        if (jTextVLAN.isEnabled() == true) {
            int vlanInt;
            boolean ok = false;
            vlanInt = Integer.parseInt(jTextVLAN.getText());
            do {
                if (vlanInt >= 1 && vlanInt <= 4094) {
                    macro.vlan = jTextVLAN.getText();
                    gerar();
                    jButtonExecutarMacro.setEnabled(true);
                } else {
                    JOptionPane.showMessageDialog(null, "VLAN deve ser maior do que 0 e menor do que 4094", "Mensagem", JOptionPane.ERROR_MESSAGE);
                    jTextVLAN.grabFocus();
                    jButtonExecutarMacro.setEnabled(false);
                }
            } while (ok);
        } else {
            macro.vlan = null;
            gerar();
            jButtonExecutarMacro.setEnabled(true);
            jButtonGerarMacro.setEnabled(false);
        }


private void jButtonExibirResultadoActionPerformed(java.awt.event.ActionEvent evt) {                                                       
    if(jCheckBoxE1.isSelected() == true){
        listaJFP.add(macro);
        Macro macro = new Macro();
        JFrameTabela jfT = new JFrameTabela(listaJFP);

}

最佳答案

您是否确保为 GUI 的每个输入创建一个新的宏

你必须像这样创建一个新的宏

public void actionPerformed(ActionEvent e){
    Macro macro = new Macro();
    listaJFP.add(macro);
}
// so it create a totally new Macro object everytime

编辑:OP编辑后使用更多代码

您需要在第一个 ActionPerformed 内部创建新的宏,因为这是您操作数据的地方。为什么对相似的任务执行两个不同的操作?

关于java - 在 ArrayList 中插入具有不同值的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19706899/

相关文章:

javascript - 编写一个函数对对象数组进行排序(通过使用另一个对象来指定排序路径和顺序)

java - 使用泛型返回多个类型

Java:向接口(interface) List<E> 添加一个新方法

java - HtmlUnit 页面响应(下载文件)

java - 在 Java 中创建直方图

Java 甲骨文异常 - "maximum number of expressions in a list is 1000"

java - 将多个数组转换为一个大的多维数组以及如何操作它

java - Springboot yaml配置不读取 boolean 值

javascript - Lodash 将对象添加到已排序的对象数组

perl - 如何在Perl中检测递归程序包调用?