首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过引用包含TextField的fx:id名称的字符串来调用TextField方法

通过引用包含TextField的fx:id名称的字符串来调用TextField方法
EN

Stack Overflow用户
提问于 2018-12-14 21:00:00
回答 1查看 95关注 0票数 0

我是新来的,如果这件事在我还没看过的地方被处理的话,很抱歉。

我正在用Java构建一个Sudoku作为一个学习项目,我允许用户在表单的左上角TextField中输入一个81个字符串,这样可以更快地将游戏加载到主板上。我知道必须有一种更简洁的方法来做到这一点。我目前的计划是:

fxml中的.Initialize全部为81 TextFields。

代码语言:javascript
复制
<TextField fx:id="tf24" maxWidth="21.5" > </TextField>
<TextField fx:id="tf25" maxWidth="21.5" > </TextField>
<TextField fx:id="tf26" maxWidth="21.5" > </TextField>

.Have : Controller中的一种方法,它将数据传递给主类以供以后使用,并将81个字符串分解并打印到游戏板上。

代码语言:javascript
复制
public void getBoard() {
    if (tf11.getLength() == 81) {
        String gameString = tf11.getText();
        for (int x = 81; x >= 1; x--) {
            int correction = ((x + 10) + ((x-1) / 9));
            Main.inputBoard(gameString, correction);
            gameString = gameString.substring(0, gameString.length() - 1);
        }
    .
    .
    .
        tf26.setText(tf11.getText().substring(tf11.getLength()-1));
        tf11.setText(tf11.getText(0,tf11.getLength()-1));
        tf25.setText(tf11.getText().substring(tf11.getLength()-1));
        tf11.setText(tf11.getText(0,tf11.getLength()-1));
        tf24.setText(tf11.getText().substring(tf11.getLength()-1));
        tf11.setText(tf11.getText(0,tf11.getLength()-1));
    .
    .
    .
    }
}

.Have :主类中接受数据并将其存储在数组中的方法。

代码语言:javascript
复制
public static void inputBoard(String gameString, int correction) {
    board[correction] = gameString.substring(gameString.length()-1);
}

两天来,我一直在努力寻找更好的方法来做这件事。如果我可以通过引用一个包含TextField的fx:id名称的字符串来调用TextField的TextField方法,这将是非常容易的,但是我还没有找到任何好的方法来做到这一点。为了自己处理这个问题,我读了一些东西,包括:

How do I invoke a Java method when given the method name as a string?

How to create an array of TextFields in JavaFX

https://docs.oracle.com/javase/7/docs/api/java/awt/TextField.html

To initialize or to not initialize JavaFX TextField

任何指导都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-14 21:16:22

好的,但是为什么不用您需要的字段创建您自己的类,例如使用id等,您可以在需要的情况下扩展TextField,然后得到TextField和唯一的id

我不认为你能正确地得到fx:id

正如我所看到的,你混淆了很多逻辑--你需要把它分开

尝试创建自己的类并从TextField扩展,并使用新的扩展TextField

我认为它应该能解决你的问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53786814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档