(请原谅我提问/格式化问题的任何错误,因为我是新的)
[请注意,我目前还不能在此处发布代码,而且FXML代码不值得发布吗? 此外,我之前的GUI编程经验非常少......我首先选择了JavaFX 8,因为我使用Java,并听说FX>>在很多方面摆动]
我正在尝试创建一个GUI,允许用户输入NumberLink拼图编号(通过鼠标操作事件),然后在网格中显示拼图,其中包含绘制路径的功能,并将其撤消。这几乎与Numberlink on Nikoli中的功能完全相同。这个难题非常有趣,这些是rules。 UI的目标是让用户通过绘制线条等交互式地解决拼图,就像在Nikoli的网站上一样。解算器将是后来添加的。
在我的项目中,我有一个Stage
,其中设置Scene
会提示用户输入行和列(以获取拼图的大小),
接下来,它会生成一个空网格(我想在这里使用GridPane
),然后用户点击方块将数字输入正方形。如果我使用TextField
和鼠标监听器并将信息存储在网格中,这个阶段不是问题...下一阶段就是我所坚持的......除非我确切知道如何做到这一点,我不能取得进展......
在第三阶段,我必须像Nikoli网站一样向用户显示数字(鼠标悬停时突出显示的数字对也是必要的功能,我认为我可以用CSS处理)。并且用户应该在数字之间绘制路径,就像在该网站上一样(我认为VLineTo
和HLineTo
类是合适的..但我不确定,并且无法找到任何替代方案请帮忙...
因此,考虑到这一点,我制作了基于FXML的虚拟gui布局来测试我的想法是否有效......
而且我无法让GridPane在其上面绘制线条(意思是,我无法在网格窗格顶部放置像HLineTo
这样的Line对象).... 有没有其他方法可以做我需要的事情做?
我还想过在网格中创建多个Canvas
对象(每个方块都是自己的画布),数字为Text
个对象,网格顶部有一个透明度为ON的Canvas,并且有它们在StackPane
上,但StackPane
的孩子将无法同步。
请指点我正确的方向,谢谢(告诉我,如果我错过了一些基本的东西,我认为我是这样的。)
答案 0 :(得分:0)
您可以将GridPane
打包在AnchorPane
中,然后使用getChildren().add(Node node)
。
假设您的控制器已定义<AnchorPane fx:id="anchorpane"...>
和implements Initializable
@FXML private AnchorPane anchorpane;
@Override
public void initialize(URL location, ResourceBundle resources) {
Line line = new Line(double startX, double startY, double endX, double endY);
anchorpane.getChildren.add(line);
}
注意:该行实际上应该依赖于鼠标事件,因此它甚至不应该在您的初始化方法中;但它应该可以帮助你开始你想要做的事情。
HTH