当前位置: 首页 > 知识库问答 >
问题:

通过fxml添加observableHashMap

池俊茂
2023-03-14

寻找语法添加一个观察HashMap与键-

Map<String, int[][]> rules = new HashMap<>();

rules.put("34Life", new int[][] { { 3, 4 }, { 3, 4 } });
rules.put("Amoeba", new int[][] { { 1, 3, 5, 8 }, { 3, 5, 7 } });
rules.put("Assimilation", new int[][] { { 4, 5, 6, 7 }, { 3, 4, 5 } });

共有1个答案

燕砚文
2023-03-14

是的,这是可能的。

<?xml version="1.0" encoding="UTF-8"?>

<?import com.mycompany.myapp.ParentWithMap?>
<?import com.mycompany.myapp.Rule?>
<ParentWithMap xmlns:fx="http://javafx.com/fxml">
    <fx:define>
        <Rule fx:id="firstRule" someData="I am first"/>
        <Rule fx:id="secondRule" someData="This will be second"/>
        <Rule fx:id="thirdRule" someData="And this is the third"/>
    </fx:define>
    <rules firstRule="$firstRule" secondRule="$secondRule" thirdRule="$thirdRule"/>
</ParentWithMap>

对于这个例子,我创建了以下类:

package com.mycompany.myapp;

import javafx.collections.FXCollections;
import javafx.collections.ObservableMap;
import javafx.scene.Parent;

public class ParentWithMap extends Parent {

    private ObservableMap<String, Rule> rules = FXCollections.observableHashMap();

    public ObservableMap<String, Rule> getRules() {
        return rules;
    }
}
package com.mycompany.myapp;

import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;

public class Rule {

    StringProperty someData = new SimpleStringProperty(this, "someData");

    public String getSomeData() { return someData.get(); }
    public StringProperty someDataProperty() { return someData; }
    public void setSomeData(String someData) { this.someData.set(someData); }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("Rule{");
        sb.append("someData=").append(getSomeData());
        sb.append('}');
        return sb.toString();
    }
}
package com.mycompany.myapp;

import javafx.fxml.FXMLLoader;

import java.io.IOException;

public class Sample {
    public static void main(String[] args) throws IOException {
        ParentWithMap parent = FXMLLoader.load(Sample.class.getResource("thefxml.fxml"));

        System.out.println(parent.getRules());
    }
}
 类似资料:
  • 我扩展了JavaFX按钮,如下所示: 现在我希望能够在我的FXML中使用它。大概是这样的: 我如何做到这一点。

  • 我的第一个帖子,请温柔点。 我正在为一个简单的游戏制作一个JavaFX图形用户界面。我有一个FXML布局加载通过FXML文件加载器在这里: 然后我在Main.java创建一个按钮: 以及为了显示: 问题:我究竟如何将FXML布局和普通java按钮对象组合在同一场景中?它像苹果和桔子一样,不可能结合吗?我的IDE不允许我调用java文档中推荐的方法: 等等 请帮我和/或给我指个方向,我真的试过了。。

  • 我有一个NSButton,它的底部与superview的齐平,我想设置它向上移动的动画,使其顶部与superview的齐平。 WWDC 2012课程228:掌握自动布局的最佳实践提到了两种设置布局更改动画的方法(31:16),我正在尝试使用CoreAnimation技术。下面的示例确实正确地移动了NSButton,但它是即时移动的,没有动画。 我能补充一下吗

  • 我第一次尝试使用JavaFx与Maven。通过这个主题:链接IntelliJ不能识别JavaFX 11与OpenJDK 11,我配置的项目。但是无论我做什么,我都不能加载fxml文件,因为"getClass(). getResources(path)"返回null。 我更改了路径,以“/”开头,没有,更改了包,创建了包,删除了包,更改了模块信息中的引用,但这不起作用。 结构:https://ibb

  • 是否可以使用构造格式的URL? 我已尝试使用以下设置值: (此调用的第三方应用程序不支持标头和其他身份验证方法) 我想这是不支持的?

  • 目前,我有2个对象,我想输入一个新的对象。 我正在寻找一个关于StackOverFlow的解决方案,如下所示:但是,我不明白我的错误。 如何在Java中将对象添加到ArrayList中 下面是我的方法: 我的错误是->main.java:75:错误:找不到符号player.add(name);文字 我不明白我的问题?? 下面是我的方法: 我的类 事先谢谢你的帮助。