我想在joptionpane中显示for循环的输出

balp4ylt  于 2021-07-11  发布在  Java
关注(0)|答案(3)|浏览(287)

我有一个arraylist,我想循环遍历arraylist并将arraylist中的项目打印到joptionpane.showinput对话框。但是如何在joptionpane中使用循环结构呢?下面的代码显示了多个joptionpane窗口,很明显,它是在一个循环中。任何人都可以修改它以只显示一个joptionpane窗口并在一个窗口中输出所有消息。

public void getItemList(){
          for (int i=0; i<this.cartItems.size(); i++){
           JOptionPane.showInputDialog((i+1) + "." +
                    this.cartItems.get(i).getName(););
        }

    }
1tu0hz3e

1tu0hz3e1#

您需要定义一个字符串变量并将 ArrayList 然后用“\n”(新行)分隔每个值,循环结束后显示输入对话框:

public static void getItemList(){
    String value = "";
    for (int i=0; i<this.cartItems.size(); i++){
        value += (i+1) + "." + this.cartItems.get(i).getName() + "\n";
    }  
    JOptionPane.showInputDialog(value);
}
wmvff8tz

wmvff8tz2#

您可以附加 cartItems 变成一个 StringBuilder 并展示 JOptionPaneStringBuilder 仅在循环终止后一次。

import java.util.List;

import javax.swing.JOptionPane;

public class Main {
    List<String> cartItems = List.of("Tomato", "Potato", "Onion", "Cabbage");

    public static void main(String[] args) {
        // Test
        new Main().getItemList();
    }

    public void getItemList() {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < this.cartItems.size(); i++) {
            sb.append((i + 1) + "." + this.cartItems.get(i)).append(System.lineSeparator());
        }
        JOptionPane.showInputDialog(sb);
    }
}

xqk2d5yq

xqk2d5yq3#

方法中的消息参数 showInputDialog() 可以是 java.lang.Object ,包括 javax.swing.JList .

// Assuming 'cartItems' is instance of 'java.util.List'
JList<Object> list = new JList<>(cartItems.toArray());
JOptionPane.showInputDialog(list);

请参阅如何创建对话框

相关问题