0

我正在使用 java PL 制作座位监控系统。我的 ComputerSeats 类中有这个方法:

public void occupySeat()
{
    seatOccupied[station-1] = true;
    mtr.showArrayIdVal().setText(stud.showField().getText());
    seat[station-1].setBackground(Color.red);
    occupiedSeatCounter++;
}

ShowArrayIdVal 包含一个Jlabel[] object,这个标签的值为“Vacant Station”,我曾经setText(stud.showField().getText())将“Vacant Station”更改为我使用输入的值JTextField。但是,每当我编译它时,它都会包含一个错误,指出它找不到settext()

4

4 回答 4

3

如果没有堆栈跟踪和更多代码,无法准确判断,但我的猜测是 mtr.showArrayIdVal() 不会返回 JLabel 实例。

如果 mtr.showArrayIdVal() 返回 JLabel[] (JLabel 对象数组),您应该调用它

mtr.showArrayIdVal()[i].setText(stud.showField().getText())

其中 i 是整数并且编译将通过 - 当然您必须声明并初始化 i。

于 2012-10-06T06:51:13.837 回答
1

如果 mtr.showArrayIdVal()返回一个JLabel对象,您的代码应该可以正常工作。

我认为这mtr.showarrayidval()是返回array of Jlable objects。所以,你应该得到对象index然后调用setText(...).

   for(JLable jl: mtr.showArrayIdVal()) {
        jl.setText(..)// do what ever you are setting here.
     }
于 2012-10-06T06:49:01.940 回答
0

采用mtr.showArrayIdVal()[0].setText(stud.showField().getText());

清单的情况

采用mtr.showArrayIdVal().get(0).setText(stud.showField().getText());

于 2012-10-06T06:46:32.650 回答
0

ShowArrayIdVal 包含一个 Jlabel[] 对象,该标签的值为“Vacant Station”

正如你所说的,它showArrayIdVal包含JLabel[]数组......所以,你不能setText()在数组上调用......

相反,您可以遍历返回的数组,并setText在各个标签上调用..

for(JLabel label: mtr.showArrayIdVal()) {
     label.setText("Your text");
}
于 2012-10-06T06:56:38.440 回答