2013-03-13 49 views
1

我无法找到一个方法来获取JOptionPane显示多维数组。Java多维数组显示在OptionPane中

这是我第一次尝试。

public static void main (String [] args) 
{ 
    int[][] numbers = new int[5][5]; 

    int rows = 5; 
    int columns = 5; 

    numbers[0][0] = 30; 
    numbers[0][1] = 29; 
    numbers[0][2] = 28; 
    numbers[0][3] = 27; 
    numbers[0][4] = 26; 

    numbers[1][0] = 26; 
    numbers[1][2] = 25; 
    numbers[1][2] = 24; 
    numbers[1][3] = 23; 
    numbers[1][4] = 22; 

    int x, y; 

    for (x = 0; x < rows; x++) 
    { 
     for (y = 0; y < columns; y++) 
     { 
      System.out.print(numbers[x][y] + " "); 
     } 
     System.out.println(""); 

    } 
    JOptionPane.showMessageDialog(null, numbers,"Arrays",JOptionPane.INFORMATION_MESSAGE); 
    System.exit(0); 
} 

这是JOptionPane的输出

https://www.dropbox.com/s/hfyjsgeaimpr2dh/JOptionPane%20output.PNG

正如你可以看到什么是错的。

控制台输出看起来像这样。

https://www.dropbox.com/s/ac0a65kttdora27/Console%20output.PNG

而且我要的是你看到的控制台输出显示在JOptionPane的。

在此先感谢!

回答

1

你可以在你打印到控制台的相同方式使用StringBuilder

public static void main (String [] args) 
{ 
    int[][] numbers = new int[5][5]; 

    int rows = 5; 
    int columns = 5; 

    numbers[0][0] = 30; 
    numbers[0][1] = 29; 
    numbers[0][2] = 28; 
    numbers[0][3] = 27; 
    numbers[0][4] = 26; 

    numbers[1][0] = 26; 
    numbers[1][2] = 25; 
    numbers[1][2] = 24; 
    numbers[1][3] = 23; 
    numbers[1][4] = 22; 

    int x, y; 
    StringBuilder builder = new StringBuilder(); 
    for (x = 0; x < rows; x++) 
    { 
     for (y = 0; y < columns; y++) 
     { 
      builder.append(numbers[x][y] + " "); 
     } 
     builder.append("\n"); 
    } 
    JOptionPane.showMessageDialog(null, builder,"Arrays",JOptionPane.INFORMATION_MESSAGE); 
    System.exit(0); 
} 
0

您不能简单地将numbers数组传递到showMessageDialog(),并期望它知道您希望如何显示它。你必须自己寻找合适的布局。也许你创建一个JPanel并在其上面布置一些JLabels来显示你想要的输出。

0

确定您可以进行如下操作:

StringBuilder sBuilder = new StringBuilder(); 
sBuilder.append("<Html><Body>"); 
sBuilder.append("<Table>"); 
for (int i = 0 ; i < numbers.length ;i++) 
{ 
    sBuilder.append("<tr>"); 
    for (int j = 0 ; j < numbers[i].length; j++) 
    { 
    sBuilder.append("<td>"+numbers[i][j]+"</td>"); 
    } 
    sBuilder.append("</tr>"); 
} 
sBuilder.append("</Table>"); 
sBuilder.append("</Body></Html>"); 
JOptionPane.showMessageDialog(null, sBuilder.toString(),"Arrays",JOptionPane.INFORMATION_MESSAGE); 
+0

@约翰井:看到更新的答案.. – 2013-03-14 17:32:26