# Wichtig! String an TextArea übergeben



## Susi1.0 (19. Dez 2010)

Hallo!
Das Problem, dass ich habe, ist nicht so einfach zu erklären, ich kenne mich mit Java auch leider nicht sehr gut aus, muss nun aber etwas programmieren...
Grob gesagt geht es um ein Minispiel und das problem ist jetzt, dass ich den String wort gerne an textArea4 übergeben möchte, sodass eben der String ausgegeben wird, wenn ich auf Button G ("Training starten")drücke.
(Für das Mini-Spiel kommt natürlich noch mehr, dass habe ich jetzt allerdings, aus Gründen der Übersichtlichkeit, ausgelassen)
Ich hatte an etwas wie textArea4.append(wort); gedacht, nur ist das Problem eben, dass ich nicht weiß WO ich das angeben soll.
Entweder erkennt Java nicht die TextArea oder eben nicht den String (was bestimtm an den in sich verschachtelten ActionEvents liegt)...weiß jemand wie ich das lösen oder umgehen kann?
Vielen Dank schon mal Im Voraus!  



```
buttonD.addActionListener( new ActionListener()
    	    {
    	    	public void actionPerformed( ActionEvent e )
    	    	{
    	    		
    	    		JFrame f = new JFrame ("Merke!");
    	    	    f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    	    	    f.setLayout(new FlowLayout());
    	    	    JPanel panel = new JPanel();
    	    		f.setContentPane(panel);
    	    		Container contentPane = f.getContentPane();
    	    		contentPane.setBackground(Color.BLUE);
    	    	    f.setSize(470,800);
    	    	    f.setResizable(true);
    	    	    f.setVisible(true);
    	    	    f.setLocation( 500,50);

    	    	    TextArea textArea4 = new TextArea(4, 20);
    	    	    f.add(textArea4);	   
    	    	    textArea4.setText("Merke!");
    	    	    textArea4.setEditable(false);
    	    		Font font1 = new Font("Verdana", Font.BOLD, 12);
    	            textArea4.setFont(font1);
    	            textArea4.setForeground(Color.BLACK);
    	            JScrollPane areaScrollPane = new JScrollPane(textArea4);
    	            f.add(areaScrollPane);
    	    		areaScrollPane.setPreferredSize(new Dimension(450, 300));
    	    		areaScrollPane.revalidate();
    	    		

    	    	    TextArea textArea5 = new TextArea(4, 20);
    	    	    f.add(new TextArea());
    	    	    textArea5.setEditable(false);
    	    		Font font = new Font("Verdana", Font.BOLD, 12);
    	            textArea5.setFont(font);
    	            textArea5.setForeground(Color.BLACK);
    	            textArea5.setSize(450, 300);
    	            
    	            
    	    		//Wir haben drei JButtons erstellt, die der contentPane hinzugefügt werden
    	    		JButton buttonG= new JButton ("Training starten");
    	    		f.add(buttonG);
     	    	    contentPane.add (buttonG);
     	    	    JButton buttonH = new JButton ("Spiel verlassen");
     	    	    contentPane.add (buttonH);
     	    	    f.add(buttonH);
     	    	    JButton buttonI = new JButton ("Auswertung");
     	    	    contentPane.add (buttonI);
     	    	    f.add(buttonI);
     	    	    
     	    	    //Die Buttons haben eine festgelegte Größe von (130, 60) und (150, 60)
     	    	    buttonG.setPreferredSize(new java.awt.Dimension(130, 60));
     	    	    buttonH.setPreferredSize(new java.awt.Dimension(130, 60));
     	    	    buttonI.setPreferredSize(new java.awt.Dimension(150, 60));
     	    	   
     	    	   //buttonH wird ein ActionListener hinzugefügt und ein ActionEvent wird beim Klick auf den
     	    	   //Button gestartet, in diesem Fall wird das Spiel geschlossen (System.exit(0);)
     	    	   buttonH.addActionListener( new ActionListener()
    	    	  	{
  	    		 
    	    		  public void actionPerformed( ActionEvent e )
    	    		  	{
    	    			  
    	    			  System.exit(0);

    	    		  	}
    	    	  	});
     	    	  
    	    	   
     	    	   
     	    	   //buttonG wird ein ActionListener hinzugefügt und ein ActionEvent wird beim Klick auf den
     	    	   //Button gestartet, in diesem Fall
     	    	   buttonG.addActionListener( new ActionListener()
     	    	  {
     	  	    		 
     	    		  public void actionPerformed( ActionEvent e )
     	    		  	{
     	    			
     	    			String wort = "Hase Haus Hose Helden";
     	    			String[] worte = new String[4];
     	    			worte = wort.split("\\s+");


     	    		  	}
     	    		 
     	    	  	});
```


----------



## eRaaaa (19. Dez 2010)

Susi1.0 hat gesagt.:


> Hallo!
> Ich hatte an etwas wie textArea4.append(wort); gedacht, nur ist das Problem eben, dass ich nicht weiß WO ich das angeben soll.
> Entweder erkennt Java nicht die TextArea oder eben nicht den String (was bestimtm an den in sich verschachtelten ActionEvents liegt)..



Du hast da eine innere Klasse, d.h. entweder deklarierst du deine Textarea als Instanzvariable, oder aber du machst sie final!

```
final TextArea textArea4 = new TextArea(4, 20);
```

Aber das ist alles ein totales Durcheinander 
Und Swing und AWT-Komponenten zu mixen ist auch keine gute Idee!


----------



## Susi1.0 (19. Dez 2010)

Vielen Dank für deine Antwort  !
Das Problem ist nun schonmal gelöst.

Allerdings funktioniert immer noch nicht alles reibungslos.
Jetzt, wo wir den String in der TextArea ausgeben können, wollen wir nicht nur einfach die Worte dort wiedergeben, sondern zufällig ausgewählte Worte, aus dieser Liste.
Beim Spiel geht es darum, dass der Nutzer 20 zufällig ausgewählte Wörter (von insgesamt 90) auf die TextArea ausgegeben kriegt (was ja jetzt funktioniert, auch wenn wir hier gerade mit 4 Worten und 2 Zufallsauswahlen arbeiten) und dass er dann in der zweiten TextArea (hier textArea5) diese Worte eintippen kann (die Worte sollen nach Ablauf einer bestimmten Zeit verschwinden aber den Timer lassen wir erstmal außen vor).
Dann sollen eben, die vom Nutzer eingetippten Worte, mit denen, die in der Textarea ausgegeben wurden, abgeglichen werden.
Ich hoffe ich konnte Euch verständlich machen, was ich erreichen möchte

Frage 1: Wie bringe ich quasi die Random Funktion zum Laufen? Importiert ist sie übrigens schon.
Frage 2: Würde der Code so ungefähr funktionieren und wie sage ich der TextArea, dass sie die gefundenenWorte dann ausgibt?

Vielen Dank schonmal für´s Helfen und entschuldigt den langen Quellcode 


```
buttonD.addActionListener( new ActionListener()
    	    {
    	    	public void actionPerformed( ActionEvent e )
    	    	{
    	    		
    	    		JFrame f = new JFrame ("Merke!");
    	    	    f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    	    	    f.setLayout(new FlowLayout());
    	    	    JPanel panel = new JPanel();
    	    		f.setContentPane(panel);
    	    		Container contentPane = f.getContentPane();
    	    		contentPane.setBackground(Color.BLUE);
    	    	    f.setSize(470,800);
    	    	    f.setResizable(true);
    	    	    f.setVisible(true);
    	    	    f.setLocation( 500,50);

    	    	    final TextArea textArea4 = new TextArea(4, 20);
    	    	    f.add(textArea4);	   
    	    	    textArea4.setText("");
    	    	    textArea4.setEditable(false);
    	    		Font font1 = new Font("Verdana", Font.BOLD, 12);
    	            textArea4.setFont(font1);
    	            textArea4.setForeground(Color.BLACK);
    	            JScrollPane areaScrollPane = new JScrollPane(textArea4);
    	            f.add(areaScrollPane);
    	    		areaScrollPane.setPreferredSize(new Dimension(450, 300));
    	    		areaScrollPane.revalidate();
    	    		

    	    	    TextArea textArea5 = new TextArea(4, 20);
    	    	    f.add(new TextArea());
    	    	    textArea5.setEditable(false);
    	    		Font font = new Font("Verdana", Font.BOLD, 12);
    	            textArea5.setFont(font);
    	            textArea5.setForeground(Color.BLACK);
    	            textArea5.setSize(450, 300);
    	            
    	            
    	    		//Wir haben drei JButtons erstellt, die der contentPane hinzugefügt werden
    	    		JButton buttonG= new JButton ("Training starten");
    	    		f.add(buttonG);
     	    	    contentPane.add (buttonG);
     	    	    JButton buttonH = new JButton ("Spiel verlassen");
     	    	    contentPane.add (buttonH);
     	    	    f.add(buttonH);
     	    	    JButton buttonI = new JButton ("Auswertung");
     	    	    contentPane.add (buttonI);
     	    	    f.add(buttonI);
     	    	    
     	    	    //Die Buttons haben eine festgelegte Größe von (130, 60) und (150, 60)
     	    	    buttonG.setPreferredSize(new java.awt.Dimension(130, 60));
     	    	    buttonH.setPreferredSize(new java.awt.Dimension(130, 60));
     	    	    buttonI.setPreferredSize(new java.awt.Dimension(150, 60));
     	    	   
     	    	   //buttonH wird ein ActionListener hinzugefügt und ein ActionEvent wird beim Klick auf den
     	    	   //Button gestartet, in diesem Fall wird das Spiel geschlossen (System.exit(0);)
     	    	   buttonH.addActionListener( new ActionListener()
    	    	  	{
  	    		 
    	    		  public void actionPerformed( ActionEvent e )
    	    		  	{
    	    			  
    	    			  System.exit(0);

    	    		  	}
    	    	  	});
 
     	    	   //buttonG wird ein ActionListener hinzugefügt und ein ActionEvent wird beim Klick auf den
     	    	   //Button gestartet, in diesem Fall
     	    	   buttonG.addActionListener( new ActionListener()
     	    	  {
     	  	    		 
     	    		  public void actionPerformed( ActionEvent e )
     	    		  	{
     	    			 Random random = new Random();
     	    			 String wort = "Hase Haus Hose Helden";
     	    			 String[] worte = new String[4];
     	    			 worte = wort.split("\\s+");
     	    			 textArea4.append(wort);
     	    			 String[] gesuchteWorte = new String[2];
     	    			 String[] gefundendeWorte = new String[2];
     	    			 boolean vorhanden = false;
     	    			 for ( int i = 0; i < 20; i++) 
     	    			 	{    
     	    				 String wort1 = worte[random.nextInt(4)];
     	    				 vorhanden = false;
     	    				 for (int j = 0; j < 20 && vorhanden == false; j++) 
     	    				 	{
     	    					 if (wort1 == gesuchteWorte[j]) 
     	    					 	{
     	    						 vorhanden = true;
     	    						 i--;
     	    					 }
     	    					 if (gesuchteWorte[j] == null) 
     	    					 	{
     	    						 gesuchteWorte[j] = wort1;
     	    						 
     	    					 	}
     	    				 	}
     	    			 }



     	    		  	}
     	    		  
     	    		 
     	    	  	});
```


----------



## Susi1.0 (20. Dez 2010)

So meine Lieben 
Frage 1 und 2 konnte ich jetzt schon selber klären und den Code soweit ändern,
allerdings hat sich jetzt ein weiteres neues Problem ergeben.

Ich möchte mit ButtonI ("Auswertung") ein ActionEvent auslösen, und zwar die Worte, die der Benutzer in TextArea5 eingegeben hat, mit den zufällig ausgewählten Worten in TextArea4 abgleichen.
Aber ich weiß nicht, wie ich das mache.

Wäre über jeden kleinen Tipp sehr dankbar, weil mir langsam die Ideen ausgehen...
Ich bitte euch also erneut um Hilfe und danke euch schon im voraus herzlich!

Eure Susi1.0


```
final TextArea textArea4 = new TextArea(4, 20);
    	    	    f.add(textArea4);
    	    	    textArea4.setText("");
    	    	    textArea4.setEditable(false);
    	    		Font font1 = new Font("Verdana", Font.BOLD, 12);
    	            textArea4.setFont(font1);
    	            textArea4.setForeground(Color.BLACK);
    	            JScrollPane areaScrollPane = new JScrollPane(textArea4);
    	            f.add(areaScrollPane);
    	    		areaScrollPane.setPreferredSize(new Dimension(450, 300));
    	    		areaScrollPane.revalidate();
    	    		

    	    	    final TextArea textArea5 = new TextArea(4, 20);
    	    	    f.add(new TextArea());
    	    	    textArea5.setEditable(false);
    	    		Font font = new Font("Verdana", Font.BOLD, 12);
    	            textArea5.setFont(font);
    	            textArea5.setForeground(Color.BLACK);
    	            textArea5.setSize(450, 300);
    	            
    	            (...)
    	    		
     	    	   //buttonH wird ein ActionListener hinzugefügt und ein ActionEvent wird beim Klick auf den
     	    	   //Button gestartet, in diesem Fall wird das Spiel geschlossen (System.exit(0);)
     	    	   buttonH.addActionListener( new ActionListener()
    	    	  	{
  	    		 
    	    		  public void actionPerformed( ActionEvent e )
    	    		  	{
    	    			  
    	    			  System.exit(0);

    	    		  	}
    	    	  	});
 
     	    	   //buttonG wird ein ActionListener hinzugefügt und ein ActionEvent wird beim Klick auf den
     	    	   //Button gestartet, in diesem Fall
     	    	   buttonG.addActionListener( new ActionListener()
     	    	  {
     	  	    		 
     	    		  public void actionPerformed( ActionEvent e )
     	    		  	{
     	    			 
     	    			 Random random = new Random();
     	    			 String wort = "(..)";
     	    			 String[] worte = new String[80];
     	    			 worte = wort.split("\\s+");
     	    			 final String[] gesuchteWorte = new String[20];
     	    			 final String[] gefundeneWorte = new String[20];
     	    			 boolean vorhanden = false;
     	    			 for ( int i = 0; i < 20; i++) 
     	    			 	{
     	    				     
     	    				 String wort1 = worte[random.nextInt(80)];
     	    				 vorhanden = false;
     	    				 for (int j = 0; j < 20 && vorhanden == false; j++) 
     	    				 	{
     	    					 if (wort1 == gesuchteWorte[j]) 
     	    					 	{
     	    						 vorhanden = true;
     	    						 i--;
     	    					 }
     	    					 if (gesuchteWorte[j] == null) 
     	    					 	{
     	    						 gesuchteWorte[j] = wort1;
     	    						 
     	    					 	}
     	    					
     	    				 	}
     	    				textArea4.append(wort1 + "\n");

     	    				
     	    			 }



     	    		  	}
     	    		  
     	    		 
     	    	  	});
     	    	   
     	    	   buttonI.addActionListener( new ActionListener()
   	    	  		{
 	    		 
     	    		   public void actionPerformed( ActionEvent e )
   	    		  		{
     	    			   
   	    		  		}
   	    	  		});
```


----------

