我正在尝试创建一个在用户点击特定单元格时切换/取消停止的网格窗格。例如,当用户点击具有内容" *"的单元格时,我希望将该特定单元格的内容更改为空白单元格" &#34 ;.类似地,如果用户点击具有空白内容的单元格" ",我希望将该单元格的内容更改为包含内容" *"的单元格。
基本上,我开始使用的网格部分输入如下:
我的网格窗格最初输入如下,我正在跟踪一个布尔矩阵,表示是否应该有一个" *"在矩阵的一个单元格中。如果有" *"在网格窗格的单元格[i,j]中,则矩阵[i,j]的值应为true
,否则应为false
。
boolean matrix[][] = new boolean[StateList.size()+1][RequirementList.size()+1];
for( InstanceArtifact li: ListOfLinks) {
int y=1;
for(InstanceArtifact re: RequirementList) {
int x=1;
for(InstanceArtifact state: StateList) {
if(li.getPropertyValue("linksource").equals(re) && li.getPropertyValue("linktarget").equals(state)) {
link= new Label(" * ");
//tick in cell (1,1)
grid.add(link, y, x);
matrix[x][y]= true;
}
else {
link= new Label(" ");
//tick in cell (1,1)
grid.add(link, y, x);
}
x++;
}
y++;
}
}
}
我想做的是切换/解开星星,这就是我正在尝试使用下面的代码,因为我们点击了包含" *"的单元格,这意味着{ {1}},我正在删除网格中的相应标签,我正在添加一个带有空文本的新标签。在标签文本为空白的相反情况下我也会做同样的事情,我需要用包含星号的标签替换它。
matrix[i][j]=true
我的代码没有按预期运行,我希望每当用户点击一个单元格时,单元格都会切换/取消,代码只在用户第一次点击给定单元格时执行,如果用户点击同一个细胞多次(不止一次),然后什么也没发生。
此外,我尝试删除标签的代码行无效:
grid.getChildren().forEach(element -> {
element.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
int matrixX= GridPane.getRowIndex(element);
int matrixY= GridPane.getColumnIndex(element);
if(element!=null && matrixX!=0 && matrixY!=0) {
System.out.println("matrixX: "+matrixX+" matrixY: "+matrixY);
System.out.println("matrixY: "+matrixY+" "+ matrix[matrixX][matrixY]);
if(matrix[matrixX][matrixY]==true && matrixX!=0 && matrixY!=0) {
System.out.println("HEY I AM HERE FIRSTTTTTTTTT");
Node newnode= new Label(" ");
GridPane.clearConstraints(element);
// grid.getChildren().remove(element);
grid.add(newnode, matrixY, matrixX);
matrix[matrixX][matrixY]=false;
/*for(int l=0; l<RequirementList.size(); l++) {
for(int p=0; p<StateList.size(); p++) {
System.out.println(l + " "+p +" "+matrix[l][p]);
}
}*/
//grid.add(mynode, matrixY+1, matrixX+1, 1, 1);
}
else if(matrix[matrixX][matrixY]==false && matrixX!=0 && matrixY!=0){
System.out.println("HEY I AM HERE SECONDDDDDDD ");
/* for(int l=0; l<RequirementList.size(); l++) {
for(int p=0; p<StateList.size(); p++) {
System.out.println(l + " "+p +" "+matrix[l][p]);
}
}*/
Node falsenode= new Label(" * ");
GridPane.clearConstraints(element);
// grid.getChildren().remove(element);
grid.add(falsenode, matrixY, matrixX);
matrix[matrixX][matrixY]=true;
}
// System.out.println("Row: " + GridPane.getRowIndex(element));
// System.out.println("Column: " + GridPane.getColumnIndex(element));
}
}
});
});
答案 0 :(得分:1)
Use of uninitialized value in numeric comparison (<=>) at (eval 4) line 1.
888888888888888888888888888888888888888888888888.8 => 7
999999999999999999999999999999999999999999999999.9 => 5
8.8.8.8 => 3
20.0.0.1 => 4
127.0.0.1 => 2
1.1.1.1.1 => 1
8.8.8.8.0 => 6
可以提供更好的服务。代码中的评论。
ToggleButton