2

正如所有准备好的那样,这可能吗?例如类控制器有

@FXML
ImageView ImageViewArrays[];

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

4

2 回答 2

2

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

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

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 混合以获得您想要的,当您的控制器类对象完全加载时,它仍然看起来像您(或其他程序员)创建了一个 ImageView 控件的数组列表在 FXML 中。

于 2013-05-11T14:44:22.933 回答
2

我认为 On this Way: 在控制器类中:

    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 然后并集成为数组

ImageView Pic[]=new ImageView{s1,s2,s3,s4};
于 2013-05-11T14:30:34.713 回答