java - 谁能告诉我为什么我的更改数量按钮没有更改数量?

标签 java swing for-loop arraylist inventory

谁能告诉我为什么我的更改数量按钮没有更改数量? ButtonListener2 应该更改 arrayCount[x] 中的项目数 到计数 JTextfield 中的数字,但它不是,可以使用一组新的眼睛。 谢谢大家

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;

public class ProduceInventory extends JFrame
{
ArrayList<String> arrayName = new ArrayList<String>();
ArrayList<Integer> arrayCount = new ArrayList<Integer>();
// declares panels and items
private final int WINDOW_WIDTH = 450;
private final int WINDOW_HEIGHT = 350;

private JPanel panel1;
private JPanel panel2;
private JPanel panel3;

private JLabel messageLabel1;
private JLabel messageLabel2;

private JTextField name;
private JTextField count;
private JTextArea output;

private JButton add;
private JButton changeQTY;
private JButton delete;
private JButton clear;
private JButton report;
private JButton save;
private JButton load;

public ProduceInventory()
{
//creates Jframe
setTitle("Produce Inventory"); 

setSize(WINDOW_WIDTH, WINDOW_HEIGHT);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setLayout(new BorderLayout());

panel1(); //build panels
panel2();
panel3();

add(panel1, BorderLayout.NORTH); //add panels
add(panel2, BorderLayout.SOUTH);
add(panel3, BorderLayout.CENTER);
setVisible(true);
}
private void panel1() //builds panel 1
{
messageLabel1 = new JLabel("Name");
messageLabel2 = new JLabel("Count");

name = new JTextField(20);
count = new JTextField(5);

    panel1 = new JPanel();


panel1.add(messageLabel1);
panel1.add(name);
panel1.add(messageLabel2);
panel1.add(count);
}
private void panel2() //builds panel 2
{
add = new JButton("Add");
changeQTY = new JButton("CHANGE QTY");
delete = new JButton("Delete");
clear = new JButton("Clear");
report = new JButton("Report");
save = new JButton("Save File");
load = new JButton("Load File");

add.addActionListener(new ButtonListener());
changeQTY.addActionListener(new ButtonListener2());

panel2 = new JPanel();
panel2.setLayout(new GridLayout(2,4));  

panel2.add(add);    
panel2.add(changeQTY);
panel2.add(delete);
panel2.add(clear);
panel2.add(report);
panel2.add(save);
panel2.add(load);
}
private void panel3() //builds panel 3
{
output = new JTextArea(10,30);

panel3 = new JPanel();

panel3.add(output);
}
private class ButtonListener implements ActionListener //add listener
{
    String nameIn;
    String countIn;
    int number;
    public void actionPerformed(ActionEvent e)
    {   

        String actionCommand = e.getActionCommand();
        if (actionCommand.equals("Add"))
        {
        nameIn = name.getText(); 
        arrayName.add(name.getText());
        countIn = count.getText(); 
        number = Integer.parseInt(countIn);
        arrayCount.add(number);

output.setText(name.getText() + " " + count.getText() + " Item     Added");

        for(int x = 0; x <= arrayName.size() - 1; x++)
            {

System.out.print((x+1)+ ".  " + arrayName.get(x) + " " + arrayCount.get(x) + "\n");
            }

        }
    }
}
private class ButtonListener2 implements ActionListener //add listener
{

    public void actionPerformed(ActionEvent e)
    {   
        String nameIn;
        String countIn;
        int number;

        String actionCommand = e.getActionCommand();
        if (actionCommand.equals("CHANGE QTY"))
        {
        nameIn = name.getText();
        countIn = count.getText(); 
        number = Integer.parseInt(countIn);

        for(int x = 0; x <= arrayName.size() - 1; x++)
        {
                if(arrayName.get(x) == nameIn)
                {
                arrayCount.set(x, number);
                }
        }
        output.setText("Qty is updated to: " + number);
        for(int x = 0; x <= arrayName.size() - 1; x++)
            {

System.out.print((x+1)+ ".  " + arrayName.get(x) + " " + arrayCount.get(x) + "\n");
            }

        }
    }
}

public static void main(String[] args)
{
new ProduceInventory(); //runs program
}
}

最佳答案

在 Action 监听器中,就行了

            if(arrayName.get(x) == nameIn)

您正在检查两个变量是否引用同一个对象。相反,您必须检查它们引用的对象是否相等:

            if(nameIn.equals(arrayName.get(x)))

关于java - 谁能告诉我为什么我的更改数量按钮没有更改数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13785507/

相关文章:

python - 使用 for 循环生成多个图;在 matplotlib 子图中显示输出

c++ - 如何使用指针为矩阵编写单循环

java - 拦截ServletException并返回404 Page not Found

java - 如何检查字符串是否平衡?

java - 如何更改 JTable 中文本段落的颜色?

java - JTextArea 输出

java - 线程输出到 GUI 文本字段

python - 单独使用 while 循环的素数生成器的逻辑错误

Java以接口(interface)作为参数覆盖抽象类方法

java - 如何在对话框中使用枚举来使用 JComboBox