如何使用增强的for循环迭代两个List对象

计划我修订

我试图使用for循环迭代两个列表,但是迭代次数与每个列表中的项目数一样多。

    List<String> l = new ArrayList();
    l.add("C:/Users/Public/Pictures/Sample Pictures/Koala.jpg");
    l.add("E:/IMG_1241.mp4");

    Image[] images = new Image[l.size()];
    ImageView[] pics = new ImageView[l.size()];

    for (final String imageResource : l) {

        for (int i = 0; i < l.size(); i++) {

有了以上程序,程序将产生最后4个项目。如果List<String> l有四个项目,则为16,即4个项目重复4次,如果有三个为9个项目。

我当时在这样的for循环中for (int i = 0, int iL; int iL < l.size(), i < l.size(); iL++, i++) {思考,但不确定如何解决。

请帮忙。

完整的程序如下所示:

public class TilePaneExample {

    public javafx.scene.layout.TilePane listItems() {

        List<String> l = new ArrayList();
        l.add("C:/Users/Public/Music/Sample Music/Maid with the Flaxen Hair.mp3");
        l.add("C:/Users/Public/Videos/Sample Videos/Wildlife.wmv");
        l.add("C:/Users/Public/Pictures/Sample Pictures/Koala.jpg");
        l.add("C:/Users/Public/Pictures/Sample Pictures/Desert.jpg");

        // Pane
        javafx.scene.layout.TilePane tilePane = new javafx.scene.layout.TilePane();
        tilePane.setHgap(2);
        tilePane.setVgap(2);
        tilePane.setMinWidth(250);

        Image[] images = new Image[l.size()];
        ImageView[] pics = new ImageView[l.size()];

        for (final String imageResource : l) {

            for (int i = 0; i < l.size(); i++) {

                final String imageResourceItem = l.get(i);
                images[i] = new Image("file:" + "C:/Users/Public/Pictures/Sample Pictures/Lighthouse.jpg");

                pics[i] = new ImageView(images[i]);
                pics[i].setFitWidth(22);
                pics[i].setPreserveRatio(true);
                pics[i].setSmooth(true);

                pics[i].setOnMouseClicked(new EventHandler<MouseEvent>() {
                    @Override
                    public void handle(MouseEvent event) {
                        File f = new File(imageResourceItem);

                        String absolutePath = f.getAbsolutePath();
                        if (imageResource.startsWith("file:")) {
                            absolutePath = absolutePath.replace("\\standAloneDev\\java\\workingDir\\live\\WakiliProject\\file:D:", "");
                        }

                        String ext = FilenameUtils.getExtension(absolutePath);

                        System.out.println("You clicked: " + absolutePath + ". The extension is: " + ext);
                        try {
                            Desktop.getDesktop().open(new File(absolutePath));

                        } catch (IOException ex) {
                            Logger.getLogger(TilePaneExample.class.getName()).log(Level.SEVERE, null, ex);
                        }

                    }
                });
                tilePane.getChildren().add(pics[i]);

            }
        }

        return tilePane;
    }
}

我正在使用Windows 7默认示例文件,因此无需进行过多修改即可正常工作。尝试执行它,您会得到我要完成的事情的图片。

谢谢你。

更新:

该应用程序应该像这样的:有一个形象的每一个环节List ll.add("C:/Users/Public/Pictures/Sample Pictures/Desert.jpg");例如。图像和链接一样多,因此有两个循环。外部循环,for (final String imageResource : l) {获取链接,内部循环for (int i = 0; i < l.size(); i++) {创建可点击的图像,单击该图像可打开资源,视频,图片或音乐文件。

杰罗·邓格(Jero Dungog)

您可以通过以下方式进行操作:

public class TilePaneExample {

public javafx.scene.layout.TilePane listItems() {

    List<String> l = new ArrayList();
    l.add("C:/Users/Public/Music/Sample Music/Maid with the Flaxen Hair.mp3");
    l.add("C:/Users/Public/Videos/Sample Videos/Wildlife.wmv");
    l.add("C:/Users/Public/Pictures/Sample Pictures/Koala.jpg");
    l.add("C:/Users/Public/Pictures/Sample Pictures/Desert.jpg");

    // Pane
    javafx.scene.layout.TilePane tilePane = new javafx.scene.layout.TilePane();
    tilePane.setHgap(2);
    tilePane.setVgap(2);
    tilePane.setMinWidth(250);

    Image[] images = new Image[l.size()];
    ImageView[] pics = new ImageView[l.size()];

    //for (final String imageResource : l) { // removed first loop

        for (int i = 0; i < l.size(); i++) {

            final String imageResourceItem = l.get(i);
            images[i] = new Image("file:" + "C:/Users/Public/Pictures/Sample Pictures/Lighthouse.jpg");

            pics[i] = new ImageView(images[i]);
            pics[i].setFitWidth(22);
            pics[i].setPreserveRatio(true);
            pics[i].setSmooth(true);

            pics[i].setOnMouseClicked(new EventHandler<MouseEvent>() {
                @Override
                public void handle(MouseEvent event) {
                    File f = new File(imageResourceItem);

                    String absolutePath = f.getAbsolutePath();
                    if (l.get(i).startsWith("file:")) { // changed the imageResourceItem into l.get(i)
                        absolutePath = absolutePath.replace("\\standAloneDev\\java\\workingDir\\live\\WakiliProject\\file:D:", "");
                    }

                    String ext = FilenameUtils.getExtension(absolutePath);

                    System.out.println("You clicked: " + absolutePath + ". The extension is: " + ext);
                    try {
                        Desktop.getDesktop().open(new File(absolutePath));

                    } catch (IOException ex) {
                        Logger.getLogger(TilePaneExample.class.getName()).log(Level.SEVERE, null, ex);
                    }

                }
            });
            tilePane.getChildren().add(pics[i]);

        }
    }

    return tilePane;
//}

}

没有第一个循环,您仍然可以使用以下命令访问链接:l.get(i)第一个循环在做什么,只是将列表的内容分配给最终的String imageResource,然后将其用于代码中:if (imageResource.startsWith("file:")) { absolutePath = absolutePath.replace("\\standAloneDev\\java\\workingDir\\live\\WakiliProject\\file:D:", ""); }那么您可以做的很有效,就是删除该第一个循环,而不必为条件运算符使用imageResource,而可以使用l.get(i)。无需通过第一个循环将其分配给String变量。希望这能回答您的问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用增强的for循环从两个ArrayList检索数据

来自分类Dev

如何使循环在每次迭代中使用3个索引而不在turbo-pascal中指定最后两个迭代?

来自分类Dev

使用STL迭代器的两个循环

来自分类Dev

Java中如何使用迭代器从两个类中检索对象

来自分类Dev

在For循环中迭代两个范围

来自分类Dev

如何使用两个不同的变量迭代命令?

来自分类Dev

如何使用 PHP 在两个日期之间进行迭代

来自分类Dev

如何通过迭代getDerivedStateFromProps中两个对象的名称相同来比较两个对象的值?

来自分类Dev

在具有两个期货的循环中使用CompletableFuture合并每个循环迭代

来自分类Dev

如何只用一个 for 循环迭代两个列表?

来自分类Dev

在一个循环中迭代两个集合

来自分类Dev

两个对象的“对于每个”循环

来自分类Dev

如何获得两个list <>对象的区别?

来自分类Dev

如何同时迭代两个表

来自分类Dev

Java:如何在嵌套的for循环中迭代两个变量

来自分类Dev

遍历两个列表时,如何在一次迭代后停止内部循环?

来自分类Dev

如何使用两个列表作为循环Python

来自分类Dev

如何使用循环逐个元素比较两个向量

来自分类Dev

如何在两个for循环中使用break?

来自分类Dev

如何使用for循环seq_along()两个列表

来自分类Dev

如何使用循环逐个元素比较两个向量

来自分类Dev

如何使用两个列表作为循环Python

来自分类Dev

如何在for循环中使用两个变量?

来自分类Dev

如何使用while循环比较两个列表

来自分类Dev

使用OpenMP通过c ++列表/迭代器并行处理两个for循环

来自分类Dev

使用foreach循环连续迭代两个结构的简单方法

来自分类Dev

Python删除两个for循环并使用某些迭代器工具进行求解

来自分类Dev

JSoup在使用循环时提取两个<div>给出了迭代(冗余)输出

来自分类Dev

如何使用两个插入查询从复选框中循环两个值

Related 相关文章

  1. 1

    使用增强的for循环从两个ArrayList检索数据

  2. 2

    如何使循环在每次迭代中使用3个索引而不在turbo-pascal中指定最后两个迭代?

  3. 3

    使用STL迭代器的两个循环

  4. 4

    Java中如何使用迭代器从两个类中检索对象

  5. 5

    在For循环中迭代两个范围

  6. 6

    如何使用两个不同的变量迭代命令?

  7. 7

    如何使用 PHP 在两个日期之间进行迭代

  8. 8

    如何通过迭代getDerivedStateFromProps中两个对象的名称相同来比较两个对象的值?

  9. 9

    在具有两个期货的循环中使用CompletableFuture合并每个循环迭代

  10. 10

    如何只用一个 for 循环迭代两个列表?

  11. 11

    在一个循环中迭代两个集合

  12. 12

    两个对象的“对于每个”循环

  13. 13

    如何获得两个list <>对象的区别?

  14. 14

    如何同时迭代两个表

  15. 15

    Java:如何在嵌套的for循环中迭代两个变量

  16. 16

    遍历两个列表时,如何在一次迭代后停止内部循环?

  17. 17

    如何使用两个列表作为循环Python

  18. 18

    如何使用循环逐个元素比较两个向量

  19. 19

    如何在两个for循环中使用break?

  20. 20

    如何使用for循环seq_along()两个列表

  21. 21

    如何使用循环逐个元素比较两个向量

  22. 22

    如何使用两个列表作为循环Python

  23. 23

    如何在for循环中使用两个变量?

  24. 24

    如何使用while循环比较两个列表

  25. 25

    使用OpenMP通过c ++列表/迭代器并行处理两个for循环

  26. 26

    使用foreach循环连续迭代两个结构的简单方法

  27. 27

    Python删除两个for循环并使用某些迭代器工具进行求解

  28. 28

    JSoup在使用循环时提取两个<div>给出了迭代(冗余)输出

  29. 29

    如何使用两个插入查询从复选框中循环两个值

热门标签

归档