gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:34:41 24 4
gpt4 key购买 nike

谁能告诉我为什么我的更改数量按钮没有更改数量?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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com