[英]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));
例如
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.