我找不到类的调试。
正如评论所说,它需要让用户输入披萨配料,然后返回价格。它有代码,但我不知道从哪里开始调试。
任何东西都会有帮助,或者即使你有一个像它一样有效的代码也会有帮助。我想学,但确实需要帮助。因此,提前感谢您在正确方向上的任何帮助/推动。
// DebugFourteen3
// User selects pizza topping and sees price
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
//use correct spelling of class name
public class DebugFourteen3 extends JFrame implements ItemListener
{
FlowLayout flow = new FlowLayout();
JComboBox pizzaBox = new JComboBox();
JLabel toppingList = new JLabel("Topping List");
JLabel aLabel = new JLabel("Paulos's American Pie");
JTextField totPrice = new JTextField(10);
int[] pizzaPrice = {7,10,10,8,8,8,8};
int totalPrice = 0;
String output;
int pizzaNum;
public DebugFourteen3()
{
super("Pizza List");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(flow);
pizzaBox.addItemListener(this);
add(toppingList);
pizzaBox.addItem("cheese");
pizzaBox.addItem("sausage");
pizzaBox.addItem("pepperoni");
pizzaBox.addItem("onion");
pizzaBox.addItem("green pepper");
pizzaBox.addItem("green olive");
pizzaBox.addItem("black olive");
add(pizzaBox);
add(aLabel);
add(totalprice);
}
public static void main(String[] arguments)
{
JFrame frame = new DebugFourteen3();
frame.setSize(200, 150);
frame.setVisible(true);
}
public void itemStateChanged(ItemEvent[] list)
{
Object source = list.getSource();
if(source == pizzaBox)
{
int pizzaNum = pizzaBox.getSelectedIndex();
totalPrice = pizzaPrice[x];
output = "Pizza Price $" + totalPrice;
totPrice.setText(output);
}
}
}发布于 2015-03-17 10:37:03
add(totalprice);是int,无法将其添加到Container。使用JLabel、JTextField或JFormattedTextField insteadpublic void itemStateChanged(ItemEvent[] list) {不是符合ItemListener合同要求的有效签名。请参阅将遵守合同要求的要求方法签名的JavaDocs,它将处理至少另外两个未定义的errorstotalPrice = pizzaPrice[x];,变量(或者更多,它在Component中被定义为private变量,您可以引用它,我认为您需要pizzaNum就我个人而言,我认为您会发现使用ActionListener比使用ItemListener更容易,因为您只关心选定项中的更改,而不关心从旧选定项到新选定项的更改
发布于 2015-03-18 14:26:54
以下是更正后的代码:
// DebugFourteen3
// User selects pizza topping and sees price
import java.awt.FlowLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
//use correct spelling of class name
public class DebugFourteen3 extends JFrame implements ItemListener {
FlowLayout flow = new FlowLayout();
JComboBox pizzaBox = new JComboBox();
JLabel toppingList = new JLabel("Topping List");
JLabel aLabel = new JLabel("Paulos's American Pie");
JTextField totPrice = new JTextField(10);
int[] pizzaPrice = { 7, 10, 10, 8, 8, 8, 8 };
int totalPrice = 0;
String output;
int pizzaNum;
public DebugFourteen3() {
super("Pizza List");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(flow);
pizzaBox.addItemListener(this);
add(toppingList);
pizzaBox.addItem("cheese");
pizzaBox.addItem("sausage");
pizzaBox.addItem("pepperoni");
pizzaBox.addItem("onion");
pizzaBox.addItem("green pepper");
pizzaBox.addItem("green olive");
pizzaBox.addItem("black olive");
add(pizzaBox);
add(aLabel);
add(totPrice);
}
public static void main(String[] arguments) {
JFrame frame = new DebugFourteen3();
frame.setSize(200, 150);
frame.setVisible(true);
}
@Override
public void itemStateChanged(ItemEvent list) {
Object source = list.getSource();
if (source == pizzaBox) {
int pizzaNum = pizzaBox.getSelectedIndex();
totalPrice = pizzaPrice[pizzaNum];
output = "Pizza Price $" + totalPrice;
totPrice.setText(output);
}
}
}错误是:
public void itemStateChanged(ItemEvent list)方法。您的类具有方法itemStateChanged(ItemEvent[] list),但此方法中的参数与接口方法不匹配。因此,修改后的此方法的argument.add(totalprice); totalprice是一个整数值&您不能将其添加到JFrame。实际需要添加JTextField totPrice.itemStateChanged(ItemEvent[] list),变量x未定义。实际上,您需要从combo中选择项目的索引,才能从pizzaPrice数组中获取其价格。所以用pizzaNum.替换了x
https://stackoverflow.com/questions/29090298
复制相似问题