对不起,我是新手。 我目前正在使用 BlueJ 并在 Eclipse 上浏览 YouTube 教程,但我需要使用 BlueJ 来完成我的作业
我只需制作一个名为 GadgetShop 的 GUI(我已经完成了),它有一些按钮可以添加来 self 的 Mobile 和 MP3 类的信息。还有一个名为 Gadget 的类,它是父类(super class)。
所以我遇到的问题是 ArrayLists 并从类中收集信息以将其显示在我制作的文本框中。我创建了一个数组列表,但我不确定出了什么问题,因为它说 类 Gadget 中的构造函数 Gadget 无法应用于给定类型;
以下是 GadgetShop 中所需的代码:
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.ArrayList;
public class GadgetShop implements ActionListener
{
private JTextField model, price, weight, size, credit, memory, phoneNo, duration, download, displayNumber;
private JButton addMobile, addMP3, clear, displayAll;
//These JTextField's are for the labels
private JTextField model2, price2, weight2, size2, credit2, memory2, phoneNo2, duration2, download2, displayNumber2;
private JFrame frame;
private ArrayList<Gadget> gadgetDetails;
public GadgetShop()
{
makeFrame();
}
public static void main (String args[]){
ArrayList<Gadget> GadgetList = new ArrayList<Gadget>();
Gadget Object = new Gadget();
GadgetList.add(Object.Gadget(model, price, weight, size));
}
public void addGadget(Gadget newGadget)
{
gadgetDetails = new ArrayList<Gadget>();
gadgetDetails.add(newGadget);
model.setText("s6");
我的小工具是这样的:
/**
* Gadget that is a super class for the Mobile Phone and MP3.
* Needs input for the price, weight, model and size.
*/
public class Gadget
{
// Variables
public double price;
public int weight;
public String model;
public String size;
/**
* Constructor for objects of class Gadget
*/
public Gadget(double ThePrice, int TheWeight, String TheModel, String TheSize)
{
// initialise instance variables
price = ThePrice;
weight = TheWeight;
model = TheModel;
size = TheSize;
}
public double price()
{
return price;
}
public int weight()
{
return weight;
}
public String model()
{
return model;
}
public String size()
{
return size;
}
public void print()
{
System.out.println("The price of the gadget is " + price + " pounds");
System.out.println("The weight is " + weight + " grams");
System.out.println("The model is " + weight);
System.out.println("The size is " + size);
}
}
它实际上意味着什么,以便我可以解决此问题,以及从我的类(class)收集信息以在单击按钮时输入到文本框中的建议方法是什么? (我知道如何在点击时激活按钮并添加信息,但只是不知道检索它的最佳方法)
感谢您的阅读,我想学习,所以这对我很有帮助。
最佳答案
您的 Gadget
构造函数采用参数:
public Gadget(double ThePrice, int TheWeight, String TheModel, String TheSize)
{
// initialise instance variables
price = ThePrice;
weight = TheWeight;
model = TheModel;
size = TheSize;
}
您不能简单地调用new Gadget()
,因为构造函数需要四个参数。您有两个选择:首先,您可以在 main 方法中提供参数:
public static void main (String args[]){
ArrayList<Gadget> GadgetList = new ArrayList<Gadget>();
Gadget object = new Gadget(1.00,20,"a model", "big");
GadgetList.add(object);
}
替换任何有意义的值。另一个解决方案是创建另一个构造函数,它不接受 Gadget
类中的参数:
public Gadget() {
//initialize values to default values
price = 1.00
weight = 21
// etc.
}
您仍然需要稍微修复 main
方法:
public static void main (String args[]){
ArrayList<Gadget> GadgetList = new ArrayList<Gadget>();
Gadget object = new Gadget();
GadgetList.add(object);
}
关于java - 当具有父类(super class)时,类中的构造函数不能应用于给定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43051894/