我在课堂上遇到'找不到符号'错误。变量在超类中明确声明,但子类无法看到它。除了子类JLabel
中的RecordViewer
的新构造函数之外,我没有收到任何错误。
class RecordViewer extends JDialog{
private JButton next;
private JButton prev;
private JLabel label;
private int current;
public RecordViewer(CDinventoryItem [] array){
super();
current = 0;
final CDinventoryItem [] items = array;
label = new JLabel(items[getCurrent()]);
从我的CDinventoryItem类预定义toString ...
@Override public String toString(){
// Decimal foramting for the inventory values
NumberFormat dformat = new DecimalFormat("#0.00");
// Formatting for the inventory output
StringBuilder ouput = new StringBuilder();
String New_Line = System.getProperty("line.separator");
ouput.append("The product number of my CD is: ").append(iPitemNumber).append (New_Line);
ouput.append("The title of the CD is: ").append(sPtitle).append (New_Line);
ouput.append("I have ").append(iPnumberofUnits).append(" units in stock.").append (New_Line);
ouput.append("The total value of my inventory on this product is: ").append(dformat.format(stockValue())).append (New_Line);
return ouput.toString();
}
答案 0 :(得分:3)
这是标准的Java JLabel吗?您正在尝试传递CDinventoryItem类型的对象,并且JLabel将没有构造函数来处理这种类型的参数,除非它正在扩展String或Icon类。
答案 1 :(得分:2)
JLabel
JLabel
未定义采用自定义类型的构造函数。你需要在那里传递一个字符串。答案 2 :(得分:0)
只是一个猜测,但你的问题措辞暗示你试图直接从子类使用私有字段?私有字段除了声明它们的类之外的任何地方都看不到,包括同一继承层次结构中的类。你可以使它受到保护,但这是不赞成的 - 更好的是提供一个mutator方法来标记或更好地,在超类构造函数中初始化它。