例如,我有一个 int 类型和大小为 3 的数组,它有元素 1、2、3 当我尝试JOptionPane
使用循环打印它时,它会生成三个不同的窗格。
当我尝试:
JOptionPane.showMessageDialog( null, array );
它提供垃圾值。
我到处搜索,但找不到解决方案。如何在选项窗格中显示阵列?
例如,我有一个 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));