String von anderen Klassen aus benutzen

Java3312

Mitglied
Hallo,
Ich hab ein kleines Problem. Ich habe einen String erstellt der den Inhalt von einem Textfeld bekommt.
Das habe ich natürlich in eine ActionListener-Methode geschrieben. Nun möchte ich aber von einer anderen Klasse aus auf den String mit dem neuen Inhat zugreiffen. das Problem ist nun, das ich den String irgendwie nicht statisch machen kann in der ActionListener Methode und die andere Klasse ihn nicht erkennt. Gibt es eine Möglichkeiten den String iwie in die andere Klasse zu "importieren" oder was anderes ???
 

Java3312

Mitglied
Das ist übrigens mein Code (String a)
Java:
package myscan;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.UnsupportedEncodingException;

import javax.swing.*;

import myscan.Buttoncancel;

     public class Form1 {
     
    	 Simple S = new Simple();
    	 
    	 static String a ;
    	 // Diese Variablen müssen immer direkt unter der Klasse stehen glaube ich
    	
     public static void main(String[] args) {
     run () ; 
     }
 
     public static void run () {
	
	 JFrame MeinFenster = new JFrame("Scanner") ;
	 MeinFenster.setSize (600,300) ;
	 MeinFenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
	 MeinFenster.setLayout(null) ;
	 MeinFenster.setResizable(false);
	 
	 Font font1 = new Font("BankGothic Md BT", Font.BOLD, 20);
	 Font font2 = new Font("BankGothic Md BT", Font.CENTER_BASELINE,15);
	 
	 JLabel MeinText = new JLabel("Geben Sie den Namen an, den das Gescannte Dokument haben soll:") ;
	 MeinText.setBounds(80, 10, 600, 100) ;
	 MeinText.setForeground(Color.darkGray);
	      
	 final JTextField Eingabe = new JTextField() ;
     Eingabe.setLayout(null);
     Eingabe.setBounds(100, 100, 350, 30);
     Eingabe.setHorizontalAlignment(JTextField.CENTER);
	 Eingabe.setFont(font1);
	 Eingabe.setForeground(Color.blue);
	
	 JButton ok = new JButton("OK");
	 ok.setBounds(300, 150, 150, 50);
	 ok.setFont(font1);
	 ok.setForeground(Color.blue);
	 ok.setVisible(true) ;
	 ok.addActionListener(new Buttonok());
	 
	 JButton Settings = new JButton("Settings");
	 Settings.setBounds(215, 220, 120, 25);
	 Settings.setFont(font2);
	 Settings.setForeground(Color.green);
	 Settings.setVisible(true) ;
	 Settings.addActionListener(new ButtonSettings());
	 
	 JButton cancel = new JButton("Cancel");
	 cancel.setBounds(100, 150, 150, 50);
	 cancel.setFont(font1);
	 cancel.setForeground(Color.red);
	 cancel.addActionListener(new Buttoncancel());
	 
	   Eingabe.addActionListener(new ActionListener(){
           
		@Override
		   public void actionPerformed(ActionEvent ae){
			    a = Eingabe.getText();
			  
		}
		   
	   });
	System.out.println(a); 
	   
	 MeinFenster.add(Eingabe);  
	 MeinFenster.add(Settings);
	 MeinFenster.add(ok);	
	 MeinFenster.add(cancel);
     MeinFenster.add(MeinText) ;
	 MeinFenster.setVisible(true) ;

	 
	 }
}
 

MrClave

Bekanntes Mitglied
Wo ist das Problem ?

Klassenamen.member bei statischen Variablen !?

Oder was meinst du ?

P.S. Schau dir mal die Code-Conventions an.. Variablen klein und final GROSS_MIT_UNDERSCORE
Und nicht so'n MischMasch... Den einen Button groß, den anderen klein, usw.
 
Zuletzt bearbeitet:

Java3312

Mitglied
Ja wenn ich aber die jetzt in der anderen klasse haben möchte steht da, das sie nicht deklariert wurde oder so.
Ich möchte ja den String mit dem neuen Inhalt als robot ausgeben lassen.
 

MrClave

Bekanntes Mitglied
Eher "not initialized variable", kannst den doch einfach gleich null setzen dann.
Hab' aber ehrlich gesagt keine Ahnung von Robot, deswegen müsstest du sonst googlen oder einfach alles mögliche austesten. Hilft ja manchmal auch^^
 

tschero

Aktives Mitglied
Wenn Du nicht unbedingt mit static Variablen arbeiten musst, schreibe Dir einen "getter" für den String und rufe diesen "getter" aus der anderen Klasse, wo der String benötigt wird auf.

Es ist auch "Guter Stil" eine Variable direkt zu definieren anstatt nur zu deklarieren (ist auch KEIN Muss).

statt:
Java:
static String a;

ist besser:
Java:
public static String a = "leer";

noch besser:
Java:
private String stText = "leer";

public String getStText()
{
 return this.stText;
}

Gruß
tschero
 
Zuletzt bearbeitet:

Timothy Truckle

Top Contributor
Wenn Du nicht unbedingt mit static Variablen arbeiten musst, schreibe Dir einen "getter" für den String und rufe diesen "getter" aus der anderen Klasse, wo der String benötigt wird auf.
Wenn die Variable schon
Code:
static
sein muss um sie von außen zu erreichen würde dass für den Getter/Setter auch gelten. Das ist also kein alternativer Ansatz.

Besser:
Verschiebe die Funktionalität, die mit dem String arbeitet in diese Klasse.
Und: mach nicht jede Methode static!

Java ist eine Objektorientierte Sprache. Bei der Objektorientierten Programmierung ist "Datenhoheit" das hochste Gut einer Klasse. Andere Klassen sollten nur in gut begründeten Ausnahmefällen Zugriff auf die privaten Variablen einer Klasse/eines Objekts haben.

Es ist auch "Guter Stil" eine Variable direkt zu definieren anstatt nur zu deklarieren (ist auch KEIN Muss).
Noch besser ist es , die Variable nur in dem Bereich zu definieren, in dem sie benötigt wird, also eine KlassenVariable nur nann anzulegen, wenn es einen guten Grund gibt, zB. dass der Inhalt bei folgenden Aufrufen der selben Methode noch bekannt sein muss. Andernfalls sind benötigte Daten als Parameter zu übergeben.

bye
TT
 

tschero

Aktives Mitglied
@Timothy Truckle:

Zitat: tschero
Wenn Du nicht unbedingt mit static Variablen arbeiten musst, schreibe Dir einen "getter" für den String und rufe diesen "getter" aus der anderen Klasse, wo der String benötigt wird auf.
Wenn die Variable schon static sein muss um sie von außen zu erreichen würde dass für den Getter/Setter auch gelten. Das ist also kein alternativer Ansatz.

Bitte erst genau lesen bevor Du JEDE meiner Antworten zitierst.

Wenn er NICHT unbedingt mit static Var. arbeiten muss, ist der von mir vorgeschlagene Ansatz genau DIE Alternative.

Wenn die Var static sein MUSS, dann könnte man sich den setter/Getter auch sparen (auch wenn das wohl eher kein guter Stil ist)

Gruß
tschero
 

Timothy Truckle

Top Contributor
Hallo,
Ich hab ein kleines Problem. Ich habe einen String erstellt der den Inhalt von einem Textfeld bekommt.
Das habe ich natürlich in eine ActionListener-Methode geschrieben. Nun möchte ich aber von einer anderen Klasse aus auf den String mit dem neuen Inhat zugreiffen.
Ich würde ja eine eigenes Listener-Interface definieren und von der anderen Klasse aus ein solches eigenes ListenerObject bei dieser Klasse anmelden. Dein schon existierender ActionListener könnte dann den String als Parameter an dieses neue ListenerObjekt weitergeben.

bye
TT
 

Java3312

Mitglied
Danke erst einmal für eure Antworten, aber ich weiss nicht was ein getter setter (return,this) oder so sein soll. Ausserdem weis ich nicht genau was ein Listener-Interface ist und wie man ein Objekt erstellt oder so. Beispiele wären schön :)
 

Timothy Truckle

Top Contributor
Danke erst einmal für eure Antworten, aber ich weiss nicht was ein getter setter (return,this) oder so sein soll. Ausserdem weis ich nicht genau was ein Listener-Interface ist und wie man ein Objekt erstellt oder so. Beispiele wären schön :)
Mit anderen Worten: Du willst erstmal ein Java-Grundlagenbuch lesen, bevor wir uns weiter mit Deinem Problem beschäftigen.

bye
TT
 

Java3312

Mitglied
Ich weiss jetzt wie eine getter setter methode funtioniert aber wie kann man die in ein ActionListener Methode einbinden oder schreiben. Das Problem ist die andere KLasse findet die Methode nicht da sie im ActionListener drin ist. Was kann an da tun ?
 

Timothy Truckle

Top Contributor
Ich weiss jetzt wie eine getter setter methode funtioniert aber wie kann man die in ein ActionListener Methode einbinden oder schreiben. Das Problem ist die andere KLasse findet die Methode nicht da sie im ActionListener drin ist. Was kann an da tun ?
Du must die anonyme Klasse des ActionListeners in der anderen Klasse schreiben und ihn dann in dieser Klasse (in der das "zu belauschende" Objekt ist) hinzufügen. Dazu muss Deine Klasse eine Methode
Code:
addListenerOnMyActionObject()
bereitstellen, die dann nichts weiter tut als den als Parameter übergebenen Listener an der Componente zu registrieren.

bye
TT
 

tschero

Aktives Mitglied
Hallo Java3312,

hier mal ein grundsätzlicher Tipp.

Ich rate Dir erstmal, Dich mit den Grundlagen etwas vertrauter zu machen.
Du arbeitest mit ActionListenern, kannst aber nicht richtig mit zwei verschiedenen Klassen umgehen.

Du solltest erstmal lernen, wie geht man mit verschiedenen Klassen/Objekten um, wie kommt man von Klasse 2 an eine Variable in Klasse 1, geht das NUR mit Getter und Setter oder auch anders, wie übergebe ich Parameter und wie arbeite ich mit übergebenen Parametern.

Erst wenn Du das verstanden hast solltest Du diese Kenntnisse mit EventListenern verbinden.

Dies ist nur ein gut gemeinter Rat um Java und OOP richtig zu verstehen.

Gruß
tschero
 

Java3312

Mitglied
Ich habe jetzt alles bisher geschafft. Doch habe ich noch ein Problem. Der String der den Text vom JTextField bekommen soll, bekommt ihn irgendwie nicht, denn wenn ich den String ausgeben möchte wird immer null angezeigt. Woran liegt das und wie kann ich das ändern ?
 

c2delegate

Mitglied
Also, nimm es dir zu Herzen (falls du wirklich programmieren möchtest) und schaue dir die Basics an, auf dieser Seite befinden sich sogar wirklich gut gemachte basics! Sonst frag google, zu deiner Frage, falls noch nicht gelöst:

1.Warum null ? Nun ja, was schreibst du in Zeile 74 ?

Java:
System.out.println(a);
Hast du eine Ahnung wann das ausgeführt wird?
Zu diesem Zeitpunkt kann nur "null" zurückgegeben werden, würdest du weiter oben einen Text setzen .setText("ich muss java lernen") , na dann würdest du das auch in deiner Ausgabe sehen, mehr nicht!

2. Googeln hilft auch weiter, du willst nämlich (vermute ich) auf Tastendruck ein Ereignis ausgelöst bekommen, da du den Listener an JTextField bindest, das ist der falsche Listener, hier der richtige (und noch was, deine Ausgabe muss natürlich in der Listener Klasse stehen!):


Java:
Eingabe.addKeyListener(new KeyListener() {
	
	@Override
	public void keyTyped(KeyEvent e) {
	System.out.println("event:"+Eingabe.getText());
		
	}
	
	@Override
	public void keyReleased(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}
	
	@Override
	public void keyPressed(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}
});
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
C char in String suchen und durch anderen String ersetzen Java Basics - Anfänger-Themen 2
C Ein String in einen anderen String "übergeben" Java Basics - Anfänger-Themen 14
H String in anderen zeichensatz Konvertieren? Java Basics - Anfänger-Themen 6
H String in Methode einer anderen Klasse übergeben Java Basics - Anfänger-Themen 5
G String in einem anderen String Java Basics - Anfänger-Themen 19
J Datei öffnen und String durch einen anderen String ersetzen. Java Basics - Anfänger-Themen 15
M ein String - ein Teilstring von einem anderen String? Java Basics - Anfänger-Themen 3
N JBuilder: Zugriff auf String von einem anderen Frame Java Basics - Anfänger-Themen 6
richis-fragen String("AT") als StringObject-Variable deklarieren Java Basics - Anfänger-Themen 14
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
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
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

Ähnliche Java Themen

Neue Themen


Oben