如何在JOptionPane中打印数组?

时间:2012-06-03 10:01:05

标签: java arrays swing joptionpane

例如,我有一个类型为int且大小为3的数组,它包含元素1,2,3当我尝试在JOptionPane中使用循环打印它时,它会生成三个不同的窗格。

当我尝试:

JOptionPane.showMessageDialog( null, array );

它给出了垃圾值。

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

4 个答案:

答案 0 :(得分:5)

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

E.G。

Using a 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));
            }
        });
    }
}

(关于数组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) );
            }
        });
    }
}

答案 1 :(得分:3)

尝试使用Arrays.toString()

JOptionPane.showMessageDialog( null, Arrays.toString(array));

Java中的数组的默认toString()方法打印,就像你所说的那样,垃圾值

另见

答案 2 :(得分:2)

你可以试试这个:

StringBuilder builder = new StringBuilder(array.length);
for (int i=0;i<array.length;builder.append(array[i++])) builder.append("\n");
JOptionPane.showMessageDialog(null, builder.toString(), "Printing results", JOptionPane.INFORMATION_MESSAGE);

使用StringBuilder的原因是它不会为您制作不同的窗格。如果您只是一次打印一个String,则必然会得到不同的窗格。

答案 3 :(得分:2)

Arrays.toString ()用作:

    int [] arr = new int [3];
    arr[0]=1;
    arr[1]=2;
    arr[2]=3;

    JOptionPane.showMessageDialog(null, Arrays.toString(arr));