如何在JOptionPane中打印数组?

ahm*_*tty 0 java arrays swing joptionpane

例如,我有一个int和size 3类型的数组,它有元素1,2,3当我尝试JOptionPane用循环打印它时,它会生成三个不同的窗格.

当我尝试:

JOptionPane.showMessageDialog( null, array );
Run Code Online (Sandbox Code Playgroud)

它给出了垃圾值.

我到处搜索,但找不到解决办法.如何在选项窗格中显示阵列?

And*_*son 5

// Wrap the list in a JScrollPane if 'size matters'.
JOptionPane.showMessageDialog(null, new JList(array));
Run Code Online (Sandbox Code Playgroud)

例如

使用JList

import javax.swing.*;

public class ArrayDisplay {

    public static void main(String[] args) {
        final String[] array = {
                "JList",
                "JTable for 2D array",
                "HTML in JLabel",
                "Delimited String in JLabel"
        };
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JOptionPane.showMessageDialog(null, new JList(array));
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

(关于阵列toString())

它给出了垃圾值.

模糊,是的 - 垃圾,没有.AFAIU它是对内存中数组的引用.

..我有一个int类型的数组

请注意,JList数组构造函数需要对象,因此需要Integer而不是int.要转换int[]Integer[]执行此操作:

import javax.swing.*;

public class ArrayDisplay {

    public static void main(String[] args) {
        int[] arrayPrimitive = {1,2,3};
        final Integer[] array = new Integer[arrayPrimitive.length];
        for (int ii=0; ii<arrayPrimitive.length; ii++) {
            array[ii] = arrayPrimitive[ii];
        }
        SwingUtilities.invokeLater(new Runnable(){
            @Override
            public void run() {
                JOptionPane.showMessageDialog( null, new JList(array) );
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)