在JavaFX 8中绘制交互路径?

时间:2014-08-06 23:14:35

标签: input path drawing javafx-8

(请原谅我提问/格式化问题的任何错误,因为我是新的)

[请注意,我目前还不能在此处发布代码,而且FXML代码不值得发布吗? 此外,我之前的GUI编程经验非常少......我首先选择了JavaFX 8,因为我使用Java,并听说FX>>在很多方面摆动]

我正在尝试创建一个GUI,允许用户输入NumberLink拼图编号(通过鼠标操作事件),然后在网格中显示拼图,其中包含绘制路径的功能,并将其撤消。这几乎与Numberlink on Nikoli中的功能完全相同。这个难题非常有趣,这些是rules。 UI的目标是让用户通过绘制线条等交互式地解决拼图,就像在Nikoli的网站上一样。解算器将是后来添加的。

  1. 在我的项目中,我有一个Stage,其中设置Scene会提示用户输入行和列(以获取拼图的大小),

  2. 接下来,它会生成一个空网格(我想在这里使用GridPane),然后用户点击方块将数字输入正方形。如果我使用TextField和鼠标监听器并将信息存储在网格中,这个阶段不是问题...下一阶段就是我所坚持的......除非我确切知道如何做到这一点,我不能取得进展......

  3. 在第三阶段,我必须像Nikoli网站一样向用户显示数字(鼠标悬停时突出显示的数字对也是必要的功能,我认为我可以用CSS处理)。并且用户应该在数字之间绘制路径,就像在该网站上一样(我认为VLineToHLineTo类是合适的..但我不确定,并且无法找到任何替代方案请帮忙...

  4. 因此,考虑到这一点,我制作了基于FXML的虚拟gui布局来测试我的想法是否有效...... 而且我无法让GridPane在其上面绘制线条(意思是,我无法在网格窗格顶部放置像HLineTo这样的Line对象).... 有没有其他方法可以做我需要的事情做? 我还想过在网格中创建多个Canvas对象(每个方块都是自己的画布),数字为Text个对象,网格顶部有一个透明度为ON的Canvas,并且有它们在StackPane上,但StackPane的孩子将无法同步。

    请指点我正确的方向,谢谢(告诉我,如果我错过了一些基本的东西,我认为我是这样的。)

1 个答案:

答案 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