gpt4 book ai didi

java - (Java) JPanel 未打印输出

转载 作者:行者123 更新时间:2023-12-01 18:30:54 25 4
gpt4 key购买 nike

我正在大学类(class)中做 JPanel 作业,但在最终打印输出时遇到问题。面板本身看起来很棒,一切都很好,唯一我无法让它做的是显示应该打印出来的行。

它的设计目的是接受杂货商品的输入,名称、价格、类别和数量均由用户输入。单击“添加到购物车”按钮时,它应该显示之前输入的所有信息。但截至目前还没有。

这是我正在使用的两个类:

MyCart.java

package assignment2;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

public class MyCart extends JFrame {

private JPanel display;
private JLabel itemLabel;
private JTextField item;
private JLabel catLabel;
private JComboBox category;
private JLabel quanLabel;
private JTextField quantity;
private JLabel priceLabel;
private JTextField price;

private JPanel btns;
private JButton addBtn;
private JButton exitBtn;

private JPanel list;
private JList myList;

private ArrayList<Item> itemList;

public MyCart() {

itemList = new ArrayList();
myList = new JList(itemList.toArray());

this.setLayout(new GridLayout(2,1,5,5));

display = new JPanel();
display.setLayout(new GridLayout(5,2,5,5));

itemLabel = new JLabel(" Item: ");
item = new JTextField(10);
catLabel = new JLabel(" Category: ");
category = new JComboBox(new String[]{"Meat", "Fruit/Vegetable", "Dairy", "Grains", "Sweets", "Other"});
quanLabel = new JLabel(" Quantity: ");
quantity = new JTextField(10);
priceLabel = new JLabel(" Price: ");
price = new JTextField(10);

display.add(itemLabel);
display.add(item);
display.add(catLabel);
display.add(category);
display.add(quanLabel);
display.add(quantity);
display.add(priceLabel);
display.add(price);

this.add(display);

btns = new JPanel();
btns.setLayout(new GridLayout(1,3,5,5));

addBtn = new JButton("Add to Cart");
exitBtn = new JButton("Exit");

btns.add(addBtn);
btns.add(exitBtn);

this.add(btns);

list = new JPanel();
list.setLayout(new FlowLayout());
list.add(new JLabel("My Cart:"));
JScrollPane myScrollPane = new JScrollPane(myList);
list.add(myScrollPane);

setLayout(new BorderLayout());
this.add(display,BorderLayout.NORTH);
this.add(btns,BorderLayout.CENTER);
this.add(list,BorderLayout.SOUTH);

//event listener object created
ButtonListeners buttonListener = new ButtonListeners();
addBtn.addActionListener(buttonListener);
exitBtn.addActionListener(buttonListener);

}

public static void main(String[] args) {
MyCart cart = new MyCart();
cart.setTitle("Cart <Adam>");
cart.setSize(400,350);
cart.setLocationRelativeTo(null);
cart.setVisible(true);
cart.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

//event listener class for adding
class ButtonListeners implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
switch(e.getActionCommand()) {

case "Add": String n = item.getText();
String c = category.getSelectedItem().toString();
double q = Double.valueOf(quantity.getText());
double p = Double.valueOf(price.getText());
Item myItem = new Item();
myItem.setName(n);
myItem.setCategory(c);
myItem.setQuantity(q);
myItem.setPrice(p);

itemList.add(myItem);
myList.setListData(itemList.toArray());
break;

case "Exit": System.exit(0);

}
}
}
//exit listener
class ExitListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}
}

项目.java

package assignment2;

public class Item {

private String name;
private String category;
private double price;
private double quantity;

public Item(String name, String category, double price, double quantity) {

}

public Item() {

}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getCategory() {
return category;
}

public void setCategory(String category) {
this.category = category;
}

public double getPrice() {
return price;
}

public void setPrice(double price) {
this.price = price;
}

public double getQuantity() {
return quantity;
}

public void setQuantity(double quantity) {
this.quantity = quantity;
}

public double calcAmount() {
return quantity * price;
}

public String toString(){
return(name + ", " + category + ", " + quantity + ", " + price + ", " + calcAmount());
}
}

最佳答案

您忘记为 JButton 添加 ActionCommand 来检查 ActionListener 中的 case 语句

每次调用此switch(e.getActionCommand())时,监听器都会获取已添加按钮的ActionCommand,如果未添加,则为名称按钮的ActionCommand

解决方案:

addBtn = new JButton("Add to Cart");
addBtn.setActionCommand("Add"); //will call the Add case actionListener

关于java - (Java) JPanel 未打印输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24275063/

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