簡體   English   中英

如何在JOptionPane中打印數組?

[英]How can I print an array in JOptionPane?

例如,我有一個類型為int且大小為3的數組,它具有元素1、2、3。當我嘗試使用循環在JOptionPane打印它時,它將創建三個不同的窗格。

當我嘗試:

JOptionPane.showMessageDialog( null, array );

它給出了垃圾值。

我到處搜索過,但找不到解決方案。 如何在選項窗格中顯示陣列?

// 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) );
            }
        });
    }
}

嘗試使用Arrays.toString()

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

正如您所稱,Java中數組的默認toString()方法會打印垃圾值

也可以看看

您可以嘗試以下方法:

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 ,那么勢必會獲得不同的窗格。

使用Arrays.toString ()作為:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM