Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javafx从gridpane中的文本字段获取文本_Java_Javafx_Textfield_Gridpane - Fatal编程技术网

Javafx从gridpane中的文本字段获取文本

Javafx从gridpane中的文本字段获取文本,java,javafx,textfield,gridpane,Java,Javafx,Textfield,Gridpane,对于我正在进行的项目,我必须在屏幕上显示矩阵的值。我选择使用gridpane中的文本字段来执行此操作,如下代码所示: for(int row = 0; row < length; row++){ for(int column = 0; column < width; column++){ // Create a new TextField in each Iteration TextField tf = new Text

对于我正在进行的项目,我必须在屏幕上显示矩阵的值。我选择使用gridpane中的文本字段来执行此操作,如下代码所示:

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);
        }
    }
for(int row=0;row
如果我更改了该屏幕中文本字段的值,我希望能够保存它们。为了做到这一点,我必须能够从文本字段中获取文本。我尝试了以下代码,但是表元素上的迭代被定义为节点,因此没有.getText()方法

OkButton.setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
对于(节点nd:table.getChildren()){
//代码位于此处,但节点没有.getText()方法
}
Stage Stage=(Stage)ok按钮.getScene().getWindow();
stage.close();
}
});
有人知道如何获得这些值吗


非常感谢

假设
的类型为
网格窗格
,您应该像这样添加
文本字段

table.add(tf, column, 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;
}
public节点getNodeByRowColumnIndex(最终int行、最终int列、GridPane GridPane){
节点结果=null;
ObservableList childrens=gridPane.getChildrens();
用于(节点:子节点){
if(gridPane.getRowIndex(节点)=行和&gridPane.getColumnIndex(节点)=列){
结果=节点;
打破
}
}
返回结果;
}

另请参见的答案。

假设
的类型为
网格窗格
,则应添加
文本字段
,如下所示:

table.add(tf, column, 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;
}
public节点getNodeByRowColumnIndex(最终int行、最终int列、GridPane GridPane){
节点结果=null;
ObservableList childrens=gridPane.getChildrens();
用于(节点:子节点){
if(gridPane.getRowIndex(节点)=行和&gridPane.getColumnIndex(节点)=列){
结果=节点;
打破
}
}
返回结果;
}

另请参见的答案。

谢谢您的回答。结果仍然是一个节点对象,没有.getText()方法,不是吗。所以我还是不知道文本字段中的文本是什么?还是我忽略了什么?不,你是对的,你从遍历子节点中得到的是一个
节点
。但是,如果在代码中仅添加
TextField
s,则可以在getNodeByRowColumnIndex`中向
TextField
添加强制转换,并返回
TextField
。否则,如果您只对包含
TextField
s的单元格感兴趣,您可以调整该方法,以在if语句中额外检查节点的类型,如果未找到匹配项,则返回
null
或一个
可选的
null,这是我更喜欢的。我对Java有点陌生,所以不知道强制转换。实际上,我的表只包含文本字段,所以我可以使用它。非常感谢你的帮助!谢谢你的回答。结果仍然是一个节点对象,没有.getText()方法,不是吗。所以我还是不知道文本字段中的文本是什么?还是我忽略了什么?不,你是对的,你从遍历子节点中得到的是一个
节点
。但是,如果在代码中仅添加
TextField
s,则可以在getNodeByRowColumnIndex`中向
TextField
添加强制转换,并返回
TextField
。否则,如果您只对包含
TextField
s的单元格感兴趣,您可以调整该方法,以在if语句中额外检查节点的类型,如果未找到匹配项,则返回
null
或一个
可选的
null,这是我更喜欢的。我对Java有点陌生,所以不知道强制转换。实际上,我的表只包含文本字段,所以我可以使用它。非常感谢你的帮助!