JavaFX数独界面如何将txt读取的二维数组写入TextField组件
问题原因
- 赋值逻辑倒置:现有代码的赋值方向是将界面文本框的内容写入从文件读取到的数独数组,未实现将数组内容同步到界面的需求
- 文件读取冗余:你将
importT.text()放在了双层for循环内部,每次循环都会重新读取一次文件,会执行81次多余的IO操作
修复方案
仅需要修改Example按钮的点击事件逻辑即可,修改后的代码如下:
btn.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { ImportText importT = new ImportText(); try { // 仅读取一次文件拿到完整数独数组 int[][] newArray = importT.text(); // 遍历数组,将值写入对应位置的文本框 for (int r = 0; r < 9; r++) { for (int c = 0; c < 9; c++) { // 将数组中的数字转为字符串,设置到对应文本框 textFields[c][r].setText(String.valueOf(newArray[c][r])); // 可选配置:如果希望预设的题目不可修改,可加上下方代码 // textFields[c][r].setEditable(false); } } } catch (FileNotFoundException e) { e.printStackTrace(); } } });
补充说明
你的ImportText类、数独文件读取逻辑、界面初始化逻辑无需调整,替换上述按钮点击事件代码即可实现点击按钮加载数独到界面的效果。如果后续需要加载不同的数独文件,仅需要修改ImportText类中文件读取的路径参数即可。
内容的提问来源于stack exchange,提问作者OnlyProblems
相关产品推荐
相关产品推荐

