java - 如何获取网格 Pane 内的信息(javaFX)

标签 java indexing javafx gridpane

我有一个在 gridPane (2x8) 中创建新文本字段的方法。我想知道,一旦创建它们,我如何访问每个索引中的信息(如:0,0 - 1,0 等)。

代码如下:

private void llenarGridJugadores(ArrayList<NodoJugadores> array)
{
    if( (array.get(0).getCategoria() == 3) && (array.get(0).getSexo().equalsIgnoreCase("m")) )
    {
        for(int i = 0 ; i < array.size() ; i++)
        {
            TextField text = new TextField(array.get(i).getNombre());
            grid.add(text, i, 0);
        }
    }
    else if( (array.get(0).getCategoria() == 3) && (array.get(0).getSexo().equalsIgnoreCase("f")) )
    {
        for(int i = 0 ; i < array.size() ; i++)
        {
            TextField text = new TextField(array.get(i).getNombre());
            grid.add(text, 1, i);
        }

这就是我正在尝试做的事情:

public ArrayList<NodoJugadores> retornarGridJugadores(ArrayList<NodoJugadores> array, NodoCategorias aux)
{
    if( (aux.getNumCategoria() == 3) && (aux.getSexo().equalsIgnoreCase("m")) )
    {
        for(int i = 0 ; i < array.size() ; i++)
        {
            array.get(i).setNombre(grid.getChildren().get(i).getAccessibleText());
        }
    }
}

最佳答案

我将组件存储在我创建的新类的列表中。然后我迭代列表以检查 (row,col) 处是否存在节点。

public class Triple{
    Node n;
    int row;
    int col;
    public Triple(Node n,int row, int col){
        this.row = row;
        this.col = col;
        this.n = n;
    }
}

该类用于将节点存储到相应的位置。

 public static Node getItem(List <Triple> l, int findRow, int findCol){

    for(int i=0; i < l.size(); i++){
        if(l.get(i).row == findRow && l.get(i).col == findCol){
            return l.get(i).n;
        }
    }
    return null;
}

这个静态类接受列表、所需的行和所需的列。然后,如果 (row,col) 处存在元素,则返回该节点。

public static void testThis(){
     List <Triple> list = new ArrayList<>();
     GridPane gp = new GridPane();
     Text a1 = new Text("Click here");
     Text a2 = new Text("Click there");
     gp.add(a1, 5, 5);
     gp.add(a2, 5, 5);

     for(int i=0; i<gp.getChildren().size; i++){
           list.add(new Triple(gp.getChildren().get(i),
                GridPane.getRowIndex(gp.getChildren().get(i)), GridPane.getColumnIndex(gp.getChildren().get(i))));
       }

        Text tempText = (Text) getItem (list, 5, 5);
        System.out.println(tempText.getText());

产生“点击此处”

关于java - 如何获取网格 Pane 内的信息(javaFX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33815075/

相关文章:

java - Html 表单通过应用程序引擎提交数据存储实体和 blobstore

java - 扩展流畅的界面

elasticsearch - _source.enabled = false时无法查看结果中的指定字段

JAVAFX : Tableview row selection behaviour

java - 如何更改javafx中按键的旋转方向

java - 递归替换所有java

java - 无法让 Maven 与 Nexus OSS 一起使用

algorithm - 从大量条目中随机详尽(非重复)选择

mysql - 在 MySQL 中,将要求和的两列转换为索引有好处吗?

javafx - 如果超限,调整 JavaFX 标签的大小