【发布时间】:2017-07-09 01:03:43
【问题描述】:
好的,所以当我将鼠标悬停在列中的任何节点上时,我试图突出显示网格窗格中垂直列中的所有节点。所以现在我正在获取鼠标所在节点的 columnIndex,然后创建一个包含共享该列索引的所有节点的数组。将该数组返回给 main 方法,然后将数组中节点的背景颜色更改为一种颜色。
这是鼠标悬停功能:
for (Node node : officeHoursGridPane.getChildren()) {
node.setOnMouseEntered((MouseEvent t) -> {
node.setStyle("-fx-background-color:#f9f3c5;");
Node source = (Node)t.getSource();
Integer colIndex = GridPane.getColumnIndex(source);
Integer rowIndex = GridPane.getRowIndex(source);
//ystem.out.println("Column #: " + colIndex + "\nRow #: " + rowIndex);
for(int c = 0; c <= colIndex; c++){
Node[] colNode = getNodeByColumnIndex(colIndex, officeHoursGridPane);
int colCount=0;
for(int v = 0; v <= colNode.length; v++){
Node vertNode = colNode[v];
vertNode.setStyle("-fx-background-color:#f9f3c5;");
}
}
});
node.setOnMouseExited((MouseEvent t) -> {
node.setStyle("-fx-background-color:#ffffff;");
});
}
这是我的 Node[] 构建器:
public Node[] getNodeByColumnIndex (final int column, GridPane gridPane) {
Node[] result = null;
ObservableList<Node> childrens = gridPane.getChildren();
int count = 0;
for (Node node : childrens) {
if(GridPane.getColumnIndex(node) == column) {
result[count] = node;
count++;
if(count > column){
break;
}
}
}
return result;
}
【问题讨论】:
-
问题是?问题出在哪里?
-
我试图突出显示我的鼠标悬停在节点上的列。我没有得到任何错误或任何东西。这就是我尝试实现它的方式。
-
我不知道该怎么做
-
@ShawnWilliams 你试过我的建议了吗?
-
@Enigo 是的,就是这样。检查我在您的帖子下方添加的 cmets
标签: javafx