我现在正面临一个问题,我认为我的主要是一遍又一遍地执行一个方法,而不是一次。如果我根据一个例子解释它会更好。我已经能够编写一个扫雷游戏了。但我把它全部写在一个MAIN课程中。这次我试图再次使用方法和类,为了练习和更好的概述。 如您所见,在我的类计算中,我正在尝试创建一个标签数组。在我的Main我试图在GridPane中添加Array中的所有标签。由于它是一个扫雷游戏,我必须添加随机炸弹,在我的例子中将是“X”。我做了这个小测试,如果它工作lbs [10] .setText(“x”),只是为了看它是否有效。它没有。调用此方法后,它会将所有标签的文本设置为X!我还想在这个类中设置一个onMouseClicked事件。我将不胜感激任何帮助,感谢您抽出时间阅读本文。我用Hashtag包围了代码 - > ######
//Main
package application;
import...
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
GridPane grid = new GridPane();
Scene scene = new Scene(grid, (20 * 20), (20 * 20));
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
for(int i = 0; i < 20; i++) {
ColumnConstraints column = new ColumnConstraints(20);
grid.getColumnConstraints().add(column);
}
for(int i = 0; i < 20; i++) {
RowConstraints row = new RowConstraints(20);
grid.getRowConstraints().add(row);
}
//#########################################################
Calculations c = new Calculations();
int count = 0;
for (int x = 0; x < c.test().length/20; x++)
{
for (int y = 0; y < c.test().length/20; y++)
{
grid.add(c.test()[count], x, y);
count++;
}
}
//#########################################################
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
这是我的课程“计算”
package application;
import...
public class Calculations {
public Label[] test() {
Label label = new Label();
Label lbs[] = new Label[20*20];
int a = 0;
for (int i = 0 ; i < 400; i++) {
lbs[i] = label;
}
lbs[10].setText("x"); //##### <- doesnt work the way it should be
return lbs;
}
}
答案 0 :(得分:1)
这是因为数组public Dictionary<Guid, string> GetCitizensWithUnwarrentedAbsence(Guid counselorId, DateTime date)
{
var now = DateTime.Now;
var startInterval = Convert.ToDateTime(date.Date.ToShortDateString());
var endInterval = Convert.ToDateTime(date.Date.ToShortDateString()).AddHours(23).AddMinutes(59);
var list = (from c in _context.CitizenCounselorSet
join p in _context.ActivityLessonParticipantSet on c.Citizen.Id equals p.UserId
where c.CounselorId == counselorId
&& c.StartDate < now
&& (c.EndDate == null || (c.EndDate.HasValue && c.EndDate.Value > now))
&& p.WasUnwarrantedAbsent
&& !p.ActivityLesson.IsDeleted
&& !p.ActivityLesson.IsCancelled
&& p.ActivityLesson.From >= startInterval
&& p.ActivityLesson.From <= endInterval
select new
{
UserId = p.UserId,
UserName = p.User.FullName,
CPR = p.User.UserName
}).ToList().Select(a => new KeyValuePair<Guid, string>(a.UserId, a.UserName + " (" + EncryptionUtility.DecryptString(a.CPR).Insert(6, "-") + ")"));
return list.ToDictionary(pair => pair.Key, pair => pair.Value);
}
中的所有元素都指向相同的标签lbs
。
因此,当您将任何一个文本设置为label
时,它会更改"x"
的文本,实际上是每个标签。
在循环中更改此行:
label
为:
lbs[i] = label;