Erste Schritte String von anderer Klasse auf TextArea von erster Klasse

feve

Mitglied
Hallo Allerseits,

ich hab ziemliche Probleme was das verknüpfen 2er Klassen bzw. deren Objekte angeht.
Ich habe zwei Klassen die Klasse Test mit der TextArea mit Namen ta und einen Knopf der in einer Klasse KnopfAktion definiert ist dort gibt es viele System.out.println's die ich auf das TextArea der ersten Klasse ausgeben möchte. Vllt erst so, dass es funktioniert und dann später eine Methode schreiben, die z.B
String s = "anfang";
sprich(s) // auf den TextArea Ausgibt

vllt. kann mir jemand helfen.

Danke im Vorraus Eve

Java:
import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextArea;


public class Test extends Frame
{
 public Test()
 {
	    //Mein Frame
	    this.setLayout(null);
	    this.setBackground(Color.white);
	    this.setSize(800,600);
	    this.setLocation(300,200);
	    this.addWindowListener(new Schliesser());
	    
	    
	    // Einfacher Knopf
	    Button b = new Button("Mach was");
		b.setBackground(Color.gray);
		b.setSize(200, 200);
		b.setLocation(100, 100);
		b.addActionListener(new KnopfAktion());
		this.add(b);
		
		// TextArea fuer Info Ausgabe
		TextArea ta = new TextArea();
		ta.setBackground(Color.orange);
		ta.setBounds(350, 200, 400, 350);
		ta.setForeground(Color.BLACK);
		add(ta);
		
		
		Ausgabe aus = new Ausgabe(ta);
			
	    this.setVisible(true); 
 }
}

Die Klasse mit der ich eigentlich die sprich Methode machen wollte
Java:
import java.awt.TextArea;


public class Ausgabe 
{
	public Ausgabe(TextArea mta)
	{	
		
		String s = "hallo";
		
		mta.append(s);
	}

}
Java:
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.awt.TextArea;

public class KnopfAktion implements ActionListener 
{

	public void actionPerformed(ActionEvent e)
	{
		String s2 = "soll auf TextArea";
		
		//Irgendwie ein Objekt erstellen von Ausgabe 
		//Aber weiß nicht wie ? 
		Ausgabe a2 = new Ausgabe(TextArea ta);		// Fehler Meldung TextArea can not be resolved
		ta.append(s2);
	}
}
 

njans

Top Contributor
Warum lässt du deine TextArea denn nicht in einer statischen Referenz halten und packst dann eine getter Methode dazu, damit man auf die zugreifen kann?
 

feve

Mitglied
Danke für die Antwort..

das Problem ist nur ich weiß weder was eine statische Referenz noch eine getter Methode ist.

Ich versteh einfach nicht genau wie ich den anderen klassen klar machen kann, dass sie das textarea ansprechen sollen..hm;(
 

njans

Top Contributor
Java:
public class Test extends Frame
{
  private static Frame frame; // eine statische Referenz auf einen Frame

  public static Frame getFrame() // Getter Methode für einen statischen Frame 
  {
    return frame;
  }
...

In deinem Fall bräuchtest du eben keinen Frame, sondern eine TextArea.
Generell empfiehlt es sich keinen Frame, sondern JFrame (Swing anstelle von AWT) zu verwenden. Gleiches gilt für deine anderen Komponenten.
 

Fab1

Top Contributor
Hallo hier mal ein kleines Beispiel, welches den Zugriff nochmal verdeutlicht.

Wir haben eine Klasse Test

Java:
public class Test {
	
	public static void main(String[] args) {
		
		Test2 t = new Test2();
		
		System.out.println(t.getJtf().getText());
		
		t.getJtf().setText("Wir verändern den Text zur Laufzeit.");
		
		System.out.println(t.getJtf().getText());
	}
}

und eine Klasse Test2

Test2 besitzt eine Instanzvariable jtf diese ist private und zum Zugriff hat sie getter und setter Methoden. Diese werden in der Klasse Test verwendet um auf das TextArea zu zugreifen.

Java:
import javax.swing.*;

public class Test2{
 
	private JTextArea jtf;
	

	public Test2(){
		
		JFrame f = new JFrame("Test Fenster");
		f.setDefaultCloseOperation(3);
		f.setSize(400,400);
		
		jtf = new JTextArea();
		jtf.setText("Irgendein Text");
		
		f.add(jtf);
		
		f.setVisible(true);
	}
	public JTextArea getJtf() {
		return jtf;
	}

	public void setJtf(JTextArea jtf) {
		this.jtf = jtf;
	}
}
 

feve

Mitglied
ich glaub ich bin der lösung schon ziemlich nah..

Fab1 ich versteh nur nicht warum kann ich dass nicht machen .. kann ich nur in einer Main Methode die TextArea ändern würd sie gern in so einer Methode irgendwie ändern (ja man merk schon ist spät sry..)
Java:
public class KnopfAktion 
{
	public void KnopfAction()
	{
	mTest2 t2 = new mTest2();
	t2.getJtf().setText("Diesmal aus einer anderen klasse namens KnopfAktion");
	System.out.println(t2.getJtf().getText());
	}
}
Java:
import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.TextField;
import javax.swing.JFrame;
import javax.swing.JTextArea;


public class mTest2 extends Frame
{
	
	
	private JTextArea jtf;
    
	 
    public mTest2(){
        
        JFrame f = new JFrame("Test Fenster");
        f.setDefaultCloseOperation(3);
        f.setSize(400,400);
        
        jtf = new JTextArea();
        jtf.setBackground(Color.black);
        jtf.setForeground(Color.green);
        jtf.setText("Irgendein Text");
        
        f.add(jtf);
        
        f.setVisible(true);
    }
    public JTextArea getJtf() {
        return jtf;
    }
 
    public void setJtf(JTextArea jtf) {
        this.jtf = jtf;
    }
}
 

njans

Top Contributor
Das kannst du nicht machen, weil du eben eine Referenz brauchst, auf genau das Objekt, welches zu verändern willst.
Fab1 hat dir damit allgemein verständlich machen wollen, wie ein Zugriff auf Attribute von Klassen funktioniert. Ich wollte dir klar machen, wie du an Objekte kommst, die erstellt hast, ohne dass du in einer Methode alles machen musst ;)
Java:
public void KnopfAction()
    {
    mTest2 t2 = new mTest2();
    t2.getJtf().setText("Diesmal aus einer anderen klasse namens KnopfAktion");
    System.out.println(t2.getJtf().getText());
    }

Das ganze läuft darauf hinaus, dass du da einfach nur ein neues Objekt erzeugst. Das bringt dir nichts :)
Du willst ja, dass du an deinem erst erstellten Objekt, etwas verändert ;)
 

feve

Mitglied
hm..ziemlich kompliziert das ganze.. ich glaub ich leg mich erstmal in mein Bett und versuch morgen drann zu arbeiten. Denke mal wenn man es einmal verstanden hat ist es nicht so schwer.. naja danke Jungs LG feve (Efa)

Ja ist irgendwie einleuchtend.. weil ich ja ein neues Objekt erstell ..hm ach das wird noch ein spaß das studium
 

njans

Top Contributor
Eigentlich ist es ganz einfach, wenn man es einmal verstanden hat ;)

Du brauchst einfach nur irgendwo eine statische Referenz anzulegen, damit du darauf zugreifen kannst. Ich glaube ich gebe mal ein einfaches Beispiel:
Angenommen, man hat eine Klasse "GUI", welche als Attribute einen JFrame und eine JTextArea hat.
Java:
public class GUI 
{
  private JFrame frame;
  private JTextArea textArea;

  ... // hier ist dann noch ein Konstruktor, der die Klassen auch sinnvoll initialisiert und zusammenfügt ;)

  public JFrame getFrame()
  {
    return frame;
  }

  public JTextArea getTextArea()
  {
    return textArea;
  }
}

Wenn das Programm nun startet, dann erstellt es eine Instanz dieser Klasse und legt diese dort ab, wo man auch wieder ran kommt:

Java:
public static void main(String[] args)
{
  GUI gui = new GUI();
  gui.getFrame().setVisible(true); // Holt sich den Frame und macht ihn sichtbar
  ReferenceHolderExample.setGUI(gui); // Rufe die statische Methode "setGUI" der Klasse "ReferenceHolderExample" auf.
}
Hier noch einmal die Klasse ReferenceHolderExample:
Java:
public class ReferenceHolderExample
{
  private static GUI activeUI;

  public static void setGUI(GUI ui)
  {
    activeUI = ui;
  } 

  public static GUI getGUI()
  {
    return activeUI;
  } 
}
Diese Klasse dient, in diesem Beispiel, nur dazu eine Referenz (statisch) auf ein Objekt (der Klasse GUI). Wenn nun irgendwas an dem JTextArea deiner GUI Instanz gemacht werden soll, kann man ganz einfach
Java:
GUI gui = ReferenceHolderExample.getGUI(); 
JTextArea area = gui.getTextArea();  // hier hast du die TextArea
aufrufen und damit hast du dein angezeigtes Objekt. Soetwas müsstest du auch machen, damit du an dein Objekt kommst. Das hier ist nur ein sehr vereinfachtes Beispiel, dennoch hoffe ich, dass es Aufschluss gibt.
 

feve

Mitglied
Danke njans.. ich glaub ich brauch nochmal deine Hilfe.. bei mir kommt immer dieser Fehler

Exception in thread "main" java.lang.NullPointerException
at Start.main(Start.java:10)
Java:
import javax.swing.JTextArea;


public class Start {

	public static void main(String[] args) 
	{
		
		GUI gui = ReferenceHolderExample.getGUI();
		JTextArea area = gui.getTextArea();
		area.append("hallo");
		
		
	}

}

So habe ich die GUI Klasse gestaltet
Java:
import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JTextArea;


public class GUI 
{
	  private JFrame frame;
	  private JTextArea textArea;	// war mal textArea;
	 
	  public GUI()
	  {
		  JFrame frame = new JFrame("Referenz Bsp");
		  frame.setSize(400,400);
		  frame.setBackground(Color.white);
		  
		  JTextArea textArea = new JTextArea();
		  textArea.setLocation(200, 200);
		  textArea.setBackground(Color.orange);
		 
		  
		  frame.add(textArea);
		  frame.setVisible(true);
	  }
	  
	  
	  
	  
	  public JFrame getFrame()
	  {
	    return frame;
	  }
	 
	  public JTextArea getTextArea()
	  {
	    return textArea;
	  }
	
}

Und die ReferenceHolderExample ist gleich geblieben
Java:
public class ReferenceHolderExample 
{
	private static GUI activeUI;
	
	
	public static void setGUI(GUI ui)
    {
		activeUI = ui;
	} 
		 
	
	public static GUI getGUI()
    {
	   return activeUI;
    } 
}
 

jgh

Top Contributor
mmh, wo wollen wir anfangen^^

Java:
public class GUI 
{
      private JFrame frame;// dieser frame wird auch immer null bleiben
      private JTextArea textArea;   // diese textArea wird immer null bleiben
     
      public GUI()
      {
          JFrame frame = new JFrame("Referenz Bsp");// willst du die oben deklarierte Variable nutzen, muss es hier heißen:
//frame = new JFrame("Referenz Bsp"); gleiches sinngemäss für die textArea
          frame.setSize(400,400);
          frame.setBackground(Color.white);
          
          JTextArea textArea = new JTextArea();

du hast 2x eine textArea deklariert, eine als globale, einmal als lokale Variable, die nur im Konstruktor sichbar ist. Deine globale Variable wird immer null bleiben...u.a. daher kommt deine NPE.
Und deiner Klasse
Code:
ReferenceHolderExample
initialisiert nicht die GUI, da fehlt mir irgendwo ein [c]new Gui()[/c] oder ähnliches....
 
Zuletzt bearbeitet:

feve

Mitglied
hm.. ich will doch einfach nur strings von einer anderen klasse auf mein JTextArea anzeigen lassen. Warum muss das so kompliziert sein ? ;(
 

njans

Top Contributor
Danke njans.. ich glaub ich brauch nochmal deine Hilfe.. bei mir kommt immer dieser Fehler

Exception in thread "main" java.lang.NullPointerException
at Start.main(Start.java:10)
Java:
import javax.swing.JTextArea;


public class Start {

	public static void main(String[] args) 
	{
		
		//GUI gui = ReferenceHolderExample.getGUI();  Das wird nichts werden, da der ReferenceHolder am Anfang noch kein Objekt von GUI hat 
                Gui gui = new GUI(); // neues Gui Objekt
                ReferenceHolderExample.setGui(gui); // Damit kennt der ReferenceHolder nun das Objekt.
		JTextArea area = gui.getTextArea();
		area.append("hallo");
	}

}

So habe ich die GUI Klasse gestaltet
Java:
import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JTextArea;


public class GUI 
{
	  private JFrame frame;
	  private JTextArea textArea;	// war mal textArea;
	 
	  public GUI()
	  {
		  //JFrame frame = new JFrame("Referenz Bsp"); Du legst da eine lokale variable an, das willst du aber nicht. Du willst die Instanzvariable verwenden.
                  frame = new JFrame("Referenz Bsp"); //so muss es sein 
		  frame.setSize(400,400);
		  frame.setBackground(Color.white);
		  
		  //JTextArea textArea = new JTextArea();  selbes Problem hier
                  textArea = new JTextArea();
		  textArea.setLocation(200, 200);
		  textArea.setBackground(Color.orange);
		 
		  frame.add(textArea);
		  frame.setVisible(true);
	  }

	  public JFrame getFrame()
	  {
	    return frame;
	  }
	 
	  public JTextArea getTextArea()
	  {
	    return textArea;
	  }
	
}

Hab da mal etwas kommentiert.
Deine letzte Frage kann man auch anders stellen: Warum ist es so schwer eine Dampfmaschine zu bauen, ich will doch nur von A nach B. ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A String aus anderer Klasse in JTextArea einfügen Java Basics - Anfänger-Themen 7
B Wert einer String Variable an andere String Variable in anderer Klasse uebergeben Java Basics - Anfänger-Themen 5
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
M String zerlegen anhand anderer String Java Basics - Anfänger-Themen 6
krgewb String mit Datumsangabe in Long umwandeln Java Basics - Anfänger-Themen 2
D String Groß/Kleinschreibung Ignorieren Java Basics - Anfänger-Themen 4
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
J Ähnlichen String in Liste finden Java Basics - Anfänger-Themen 6
Kartoffel_1 String transformation Java Basics - Anfänger-Themen 7
H String-Operation replace() - Zeichenkette verdoppeln Java Basics - Anfänger-Themen 2
K String analysieren Java Basics - Anfänger-Themen 27
Beowend String zu Date parsen Java Basics - Anfänger-Themen 1
Beowend String auf Satzzeichen überprüfen? Java Basics - Anfänger-Themen 6
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
I Sass Compiler und String erhalten? Java Basics - Anfänger-Themen 7
Avalon String in Double bzw. Währung konvertieren Java Basics - Anfänger-Themen 6
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
F Arraylist<String>Ein Wort pro Zeile Java Basics - Anfänger-Themen 6
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
N String überprüfen Java Basics - Anfänger-Themen 3
E String zerlegen aus args Java Basics - Anfänger-Themen 1
M Long-Typ in String-Änderung führt zu keinem Ergebnis bei großer Zahl Java Basics - Anfänger-Themen 11
Ostkreuz String Exception Java Basics - Anfänger-Themen 8
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
J String Filter Java Basics - Anfänger-Themen 5
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Größter zusammenhängender Block gleicher Zeichen im String Java Basics - Anfänger-Themen 1
XWing Randomizer mit einem String Java Basics - Anfänger-Themen 2
D 2D Char Array into String Java Basics - Anfänger-Themen 2
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
I Zerlegen von String Java Basics - Anfänger-Themen 3
B Beliebiger String gegeben Suche Datum in String Java Basics - Anfänger-Themen 6
I String Java Basics - Anfänger-Themen 4
I API - zurückgegebener JSON String lesen und in Entity konvertieren Java Basics - Anfänger-Themen 2
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
W String einer Textdatei in einzelne Stringobjekte pro Zeile aufteilen Java Basics - Anfänger-Themen 14
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
M Kommandozeilenparamter als EINEN String werten Java Basics - Anfänger-Themen 5
M RandomAccessFile int und String gleichzeitig in einer Datei Java Basics - Anfänger-Themen 49
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
Distanz zwischen zwei Zeichenfolgen in einem String bestimmen Java Basics - Anfänger-Themen 5
Substring in einem String finden Java Basics - Anfänger-Themen 13
BeginnerJava String mit vorgegebener Länge und Buchstaben erzeugen/ mit Leerstellen Java Basics - Anfänger-Themen 8
I Eindeutiger String mit maximaler Anzahl an Zeichen Java Basics - Anfänger-Themen 11
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
JavaBeginner22 Integer in String umwandeln Java Basics - Anfänger-Themen 7
HolyFUT JSON String in Java Object schreiben - Anführungszeichen rauskriegen? Java Basics - Anfänger-Themen 17
Fodoboo131 RegEx- Umwandlung von String in ausführbares Objekt/ Befehl Java Basics - Anfänger-Themen 9
HolyFUT Input/Output Leerzeichen aus String entfernen - klappt nicht! Java Basics - Anfänger-Themen 13
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
Alen123 String wiederholen mit Schleifen Java Basics - Anfänger-Themen 1
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
T String splitten Java Basics - Anfänger-Themen 3
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
T Platzhalter in String? Java Basics - Anfänger-Themen 14
M String mit Variable vergleichen Java Basics - Anfänger-Themen 9
I String Kombination erstellen anhand fortlaufender Zahl (Vertragsnummer) Java Basics - Anfänger-Themen 13
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
M Wie kann eine Methode (string) eine andere Methode (void) mit zufälligen int-Werten aufrufen? Java Basics - Anfänger-Themen 4
P9cman Vokale in einem String überprüfen mittels Rekursion Java Basics - Anfänger-Themen 8
schredder Strings und reguläre Ausdrücke - Methode mit return string.matches Java Basics - Anfänger-Themen 5
R Ein Multidimensionales String Array initialisieren und Deklarieren Java Basics - Anfänger-Themen 2
H String Repräsentation eines Rechtecks mit Instanz-Methode Java Basics - Anfänger-Themen 8
Dorfschmied Kartesisches Produkt von zwei Liste mit Hashmaps<String,String> erstellen Java Basics - Anfänger-Themen 4
S String mit Int input vergleichen Java Basics - Anfänger-Themen 5
C String/Char-API Java Basics - Anfänger-Themen 13
U Char zu einem String machen Java Basics - Anfänger-Themen 1
B Anzahl Nullen uns Einsen in String ermitteln Java Basics - Anfänger-Themen 3
T Leerzeichen im String entfernen Java Basics - Anfänger-Themen 6
Jose05 Nullpointerexception bei Umwandlung von String zu int Java Basics - Anfänger-Themen 2
O Ich habe einen String und soll mit matches schauen, ob ein Buchstabe zu einer geraden ANzahl im String vorkommt, wie soll das gehen? Java Basics - Anfänger-Themen 7
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12
N null in String replacen Java Basics - Anfänger-Themen 16
R Compiler-Fehler JTable mit XML befüllen | The constructor JTable(Object[], String[]) is undefined Java Basics - Anfänger-Themen 10
M Eclipse kennt keine String Klasse mehr Java Basics - Anfänger-Themen 1
M Frage zur Methode split der Klasse String Java Basics - Anfänger-Themen 32
D String mit int multiplizieren? Java Basics - Anfänger-Themen 16
H Überprüfen ob String Array leer ist Java Basics - Anfänger-Themen 4
A Korrigierte <String> Liste zurückgeben Java Basics - Anfänger-Themen 22
C In String, Buchstaben ersetzen durch andere Buchstaben Java Basics - Anfänger-Themen 26
Poppigescorn String mit mehreren Wörtern füllen? Java Basics - Anfänger-Themen 4
I String Expression mit Java validieren (true / false) Java Basics - Anfänger-Themen 34
B String - Wörter finden, welches Punkt und entsprechender Pre / Suffix hat? Java Basics - Anfänger-Themen 30
T Maximale Anzahl von Konsonanten im String Java Basics - Anfänger-Themen 6
H String verschlüsseln - eigener Algorithmus Java Basics - Anfänger-Themen 104
N Aus einem String die Anzahl der Vokale auslesen Java Basics - Anfänger-Themen 40
J Eintrag Combobox über einen String auswählen Java Basics - Anfänger-Themen 3
K mit String.splitt(",") ganzen Satz erhalten? Java Basics - Anfänger-Themen 3
K Wie String prüfen ob drei mal das gleiche Zeichen vorkommt? Java Basics - Anfänger-Themen 7
I Validation, ob String ein Wert aus einem Enum enthält Java Basics - Anfänger-Themen 3
D String und char in String speichern Java Basics - Anfänger-Themen 5
A ObservableList<String> Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben