Javafx从gridpane中的文本字段获取文本
对于我正在进行的项目,我必须在屏幕上显示矩阵的值。我选择使用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
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有点陌生,所以不知道强制转换。实际上,我的表只包含文本字段,所以我可以使用它。非常感谢你的帮助!