(在javaFx上)是否可能设置控件Fx:id Scene Builder中该控件数组的一个元素?

时间:2013-05-11 14:10:33

标签: javafx scenebuilder

所有准备好的问题是否可能? 例如,类控制器有

@FXML
ImageView ImageViewArrays[];

在Scene Builder ImageViewArrays [1]中设置一个ImageView的fx:id?

2 个答案:

答案 0 :(得分:2)

我想这就是这样:在控制器类中:

    private ImageView s1;
    @FXML
    private ImageView s2;
    @FXML
    private ImageView s3;
    @FXML
    private ImageView s4;
    @FXML
    private ImageView s5;

在Scene Builder上设置每个ImageView的fx:id,s1 ... s5然后再作为数组进行intergrade

ImageView Pic[]=new ImageView{s1,s2,s3,s4};

答案 1 :(得分:2)

我不知道SceneBuilder 1.1对控件数组有任何直接支持。

但是如果你正在处理表单上的静态控件数组,那么正如Riporter所说,在FXML加载操作期间通过包含他在你的Initialize()方法中提供的语句来生成控件数组是微不足道的。控制器类。

Imageview[] m_pics = new Imageview[] {s1, s2, s3, s4, ...};

如果您需要使用动态生成的控件数组,您仍然可以使用FXML生成基本实例,您可以在控制器类的Initialize()方法中创建ArrayList,例如:

private List<ImageView> m_pics;

@FXML
private ImageView iv1;

然后在您的Initialize()方法中:

private void Initialize() {

    m_pics = new ArrayList<>();
    m_pics.add(iv1);
    :
    :
}

通过这种方式,即使你必须将代码与FXML混合以获得你想要的东西,但是当你的控制器类对象被完全加载时,它仍然会向你(或其他程序员)看起来像你创建了一个数组列表FXML中的ImageView控件。