小编Aga*_*ria的帖子

如何动态地将内容加载到JavaFX选项卡?

我有一个使用JavaFX和FXML制作的GUI.

这个GUI有很多组件,并不是所有组件都需要在一个时刻.

例如,假设一个GUI从其服务器部分接收城市列表.每个城市都在其自己的选项卡上进行描述(并使用大量节点进行描述).这组城市包含30个元素.

启动GUI时,它会向服务器请求城市列表.服务器返回城市的随机"子集"(因此,它可以是莫斯科+里加+纽约或圣彼得堡+东京,或仅阿姆斯特丹,或一组中的所有30个城市).

所以.我没有必要在我的节点树中拥有所有30个选项卡(我想它们只会"吃掉"内存而已.)

我想管理GUI上每个时刻的标签数量.

我有的第一个简单的解决方案如下:

  1. 创建一个FXML文件,其中包含所有城市的组件
  2. 在控制器类初始化期间,删除不需要的选项卡.

我对此解决方案存在问题.首先,我不知道是否tabPane.getTabs().remove(index)真的从节点树中删除了选项卡及其所有内容.其次,所有不需要的选项卡将在删除之前初始化,因此无论如何它们将使用内存和资源,并且我的GUI可能比它必须慢.

我的第二个解决方案是:

  1. 制作大量的FXML.一个适用于所有城市,每个城市一个,每个城市组合一个.

但是会有许多FXML,所以这个解决方案也没用.

我梦寐以求的解决方案:

  1. 为每个城市创建一个FXML文件,为主应用创建一个带标签的文件.
  2. 在需要时动态地将FXML城市文件内容加载到选项卡中.

所以,如果有人对此任务有任何想法,或者知道解决方案,请帮助我...

javafx-2 fxml

5
推荐指数
1
解决办法
2万
查看次数

Jasmine:如何监视内部对象方法调用?

我有两个我要测试的原型:

var Person = function() {};

Person.prototype.pingChild = function(){
   var boy = new Child();
   boy.getAge();
}

var Child = function() {};

Child.prototype.getAge = function() {
    return 42;
};
Run Code Online (Sandbox Code Playgroud)

我究竟要测试的是:检查getAge()方法内部是否调用该pingChild()方法

这是我试图用于此目的的Jasmine规范:

describe("Person", function() {
    it("calls the getAge() function", function() {
        var fakePerson = new Person();
        var chi = new Child();
        spyOn(fakePerson, "getAge");
        fakePerson.pingChild();
        expect(chi.getAge).toHaveBeenCalled();
    });
});

describe("Person", function() {
    it("calls the getAge() function", function() {
        var fakePerson = new Person();
        spyOn(fakePerson, "getAge");
        fakePerson.pingChild();
        expect(fakePerson.getAge).toHaveBeenCalled();
    });
}); …
Run Code Online (Sandbox Code Playgroud)

javascript testing bdd unit-testing jasmine

4
推荐指数
1
解决办法
9690
查看次数

如何使JavaFX可编辑的comboBox打开?

如何自动打开ComboBox?

我有一个可编辑的ComboBox.我想让它自动打开,而不是强迫用户点击它.怎么做到呢?我试图做这样的事情:

testButton.fireEvent(new Event(ComboBox.ON_SHOWN));
Run Code Online (Sandbox Code Playgroud)

但它不能正常工作:在输出中我可以看到消息,它表示ON_SHOWN事件被触发,但是图形上我的comboBox仍然关闭.另外,我试过了

testButton.fireEvent(new Event(ComboBox.ON_SHOWING));
Run Code Online (Sandbox Code Playgroud)

但这根本没有反应.以及

testButton.fireEvent(new Event(ComboBoxBase.ON_SHOWING));
Run Code Online (Sandbox Code Playgroud)

testButton.fireEvent(new Event(ComboBoxBase.ON_SHOWN));
Run Code Online (Sandbox Code Playgroud)

PS:说打开的comboBox我的意思是这样的:

combobox javafx-2

1
推荐指数
1
解决办法
2765
查看次数

获取 prometheus 标签的因变量

在我的 /metrics 页面上,我有类似的字符串

 my_metric{controller="cont_a",action="act_a",le="1"} 5
 my_metric{controller="cont_a",action="act_b",le="1"} 4
 my_metric{controller="cont_b",action="act_c",le="1"} 3
 my_metric{controller="cont_b",action="act_d",le="1"} 2
Run Code Online (Sandbox Code Playgroud)

在我的 Grafana 仪表板上,我想看到两个变量:controlleraction。如果我只是通过label_values(controller)和之类的查询来定义它们label_values(action),它们将是独立的,这意味着如果"cont_a"选择了控制器,则所有 4 个操作都将可用。但我想让操作变量依赖于控制器变量,因此,如果"cont_a"选择控制器,则只有值"act_a""act_b"可用于操作变量。如果"cont_b"选择 ,则只有"act_c""act_d"。有没有办法以这种方式配置 Grafana 仪表板?

grafana prometheus

0
推荐指数
1
解决办法
2792
查看次数