0

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

当我尝试:

JOptionPane.showMessageDialog( null, array );

它提供垃圾值。

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

4

4 回答 4

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

例如

使用 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) );
            }
        });
    }
}
于 2012-06-03T10:15:15.790 回答
3

尝试使用Arrays.toString()

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

Java 中数组的默认toString()方法打印,如您所说,垃圾值

也可以看看

于 2012-06-03T10:03:55.087 回答
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,您一定会得到不同的窗格。

于 2012-06-03T10:07:12.497 回答
2

用作Arrays.toString ()

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

    JOptionPane.showMessageDialog(null, Arrays.toString(arr));
于 2012-06-03T10:09:05.803 回答