# Ausgabe mit JOptionPane



## mauri (5. Jan 2006)

Hallo,

Ich erforsche gerade die Welt des Swing.

Ich habe da ein 2 dimens. Array (10x5) welches mit Sternchen gefüllt ist.

Hier das Prog dazu:

```
import java.*;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import java.util.Arrays;


class Sterne {

	public static void main (String args[]) {

	
		String A1 [][]= new String [10][5];	//10 x 5 Array 

		
		int i,j=0;String k= "*";
		 

		for(i=0; i<10; i++)
		   for(j=0; j<5; j++) {

			A1[i][j]=k;		//fülle das Array mit Sternchen '*'
		  
	}
	

	//System.out.println("Das 4x5 ARRAY vom Typ int :"); //i,j noch nicht initialisiert

	for(i=0; i<10; i++)            {
		   for(j=0; j<5; j++) 
			
			System.out.print(A1[i][j] + " ");  //gibt Sternmatrix auf Konsole aus, klappt!
			System.out.println();


	} 

	//nun möchte ich die Sternmatrix im Information Window ausgeben, aber wie???

	JFrame testFrame = new JFrame(); 					
	testFrame.getContentPane().add( new JTextField( "Schauen Sie auch auf der Konsole nach!" ));
     	testFrame.pack();
     	testFrame.setLocationRelativeTo( null );
     	testFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
     	testFrame.setVisible( true );
	
	
	JOptionPane pane = new JOptionPane( A1, JOptionPane.INFORMATION_MESSAGE ); //soll Matrix ausgeben
     	JDialog dialog = pane.createDialog( testFrame, "Sterne" );                                    
     	dialog.setModal( true );
    	dialog.setVisible( true );  

}
}
```

Nun mein Problem:

Ich kann das Array auf der Konsole ausgeben und zwar im gewünschten Format:

* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *      (das 10x5 Array gefüllt mit Sternchen).

Nun will ich die gleiche Ausgabe mittels einer JOptionPane Komponente erzeugen.
Dies habe ich auch schon probiert, jedoch werden die Sterne aller untereinander in
1 Reihe angezeigt.

Wie kann ich auch hier die Matrix (bzw. das Array im 10x5 Format) ausgeben?


----------



## dieta (6. Jan 2006)

Du kannst im JOptionPane HTML anzeigebn lassen. Mach einfach hinter jede Zeile ein 
:
<html>
<head></head>
<body>
*****

*****

*****

*****

*****

*****

*****

*****

</body>
</html>


----------



## mauri (6. Jan 2006)

Ok vielen Dank für den Hinweis!

Ist es denn auch möglich,  meine for Schleife mit dem 2 Dimensionalen Array und den Println- Anweisungen (wodurch die Sterne in der gewünschten Anordnung erzeugt werden)  in das JOptionPane einzubinden?


----------



## bummerland (6. Jan 2006)

klar, wieso nicht?
pseudo-code:

```
Stringbuffer b = new StringBuffer();
for (...){
    b.append(...);
}
JOptionPane.dialog(b.tostring());
```


----------



## mauri (6. Jan 2006)

Hab ich ausprobiert und es funktioniert!

 

Vielen Dank

Gruß
mauri


----------



## Cobrus (6. Jan 2008)

Wenn ich da nochmal einhaken darf: Wie funktioniert die Ausgabe eines eindimensionalen Arrays über JOptionPane?

Meine Lösung sieht momentan wie folgt aus:


```
for (int indexNeu = 0; indexNeu < werte.length; indexNeu++)
  System.out.print(werte[indexNeu] + "\t");
  JOptionPane.showMessageDialog(null, werte[indexNeu] + "\t", "Ihre Werte aufsteigend sortiert:",
            JOptionPane.INFORMATION_MESSAGE);
```

Das funktioniert sehr gut für die Konsole. Für jede Zahl ein neues Dialogfenster zu erhalten ist aber irgendwie blöd, im besonderen sobald wir mit sehr großen Arrays arbeiten. Die Anweisung nach der Schleife wie folgt aufzuführen


```
int indexNeu = werte.length;
JOptionPane.showMessageDialog(null, werte[indexNeu] + "\t", "Ihre Werte aufsteigend sortiert:",
          JOptionPane.INFORMATION_MESSAGE);
```

ist aber auch nicht so toll, da ich dann die Fehlermeldung "java.lang.ArrayIndexOutOfBoundsException: 12" erhalte für diese Zeile erhalte.
Gibt es eine Möglichkeit die Ausgabe über JOptionPane zu bewerkstelligen, ohne andere Klassen heranzuziehen?


Gleichfalls tät mich interessieren, wie ich eine Eingabe über JOptionPane so gestalte, dass ich im Input Dialog eine Reihe von Zahlen angebe und diese als eindimensionales Array angenommen werden.


Gruß,
Cobrus


----------



## Cobrus (9. Jan 2008)

Hallo, möchte das gerne in Erinnerung rufen. Kann mir da evtl. jemand helfen?


----------

