对于我正在处理的项目,我必须在屏幕上显示矩阵的值。我选择通过在网格窗格中使用文本字段来执行此操作,如下面的代码所示:
for(int row = 0; row < length; row++){
for(int column = 0; column < width; column++){
// Create a new TextField in each Iteration
TextField tf = new TextField();
tf.setPrefHeight(50);
tf.setPrefWidth(50);
tf.setAlignment(Pos.CENTER);
tf.setEditable(true);
tf.setText(String.valueOf(this.getElement(row, column)));
// Iterate the Index using the loops
setRowIndex(tf,row);
setColumnIndex(tf,column);
table.getChildren().add(tf);
}
}
如果我更改文本字段的屏幕内的值,我希望能够保存它们。为此,我必须能够从文本字段中获取文本。我尝试使用代码,但是对表元素的迭代被定义为节点,因此没有.getText()方法。
OkButton.setOnAction(new EventHandler<ActionEvent>(){
@Override
public void handle (ActionEvent event){
for (Node nd:table.getChildren()){
//Code goes here but Node does not have .getText() method
}
Stage stage = (Stage) OkButton.getScene().getWindow();
stage.close();
}
});
有谁知道如何获得这些价值观?
非常感谢!
答案 0 :(得分:2)
假设table
的类型为GridPane
,您应该像这样添加TextField
:
table.add(tf, column, row);
为了访问元素,当它的col和row索引已知时,没有简单的方法:
public Node getNodeByRowColumnIndex(final int row,final int column,GridPane gridPane) {
Node result = null;
ObservableList<Node> childrens = gridPane.getChildren();
for(Node node : childrens) {
if(gridPane.getRowIndex(node) == row && gridPane.getColumnIndex(node) == column) {
result = node;
break;
}
}
return result;
}