importjava.awt.*;importjavax.swing.*;importjavax.swing.event.*;publicclass netBuddyMain implementsDocumentListener{publicstaticvoidmain(String[] args){
netBuddyMain nbm =newnetBuddyMain();}netBuddyMain(){
netBuddyFrame nbf =newnetBuddyFrame();// Erstellung der GUI
netBuddyTask nbt =newnetBuddyTask();// Erstellung der Berechnung
nbf.textField2.getDocument().addDocumentListener(this);// Anmelden des Listeners für die Felder der IP-Adresse}@OverridepublicvoidchangedUpdate(DocumentEvent e){
nbf.textField2.setText("TEST");}}
Code:
H:\netBuddyMain.java:19: package nbf does not exist
nbf.textField2.setText("TEST");
^
Warum findet er das nicht? Kann ich da iwie drauf zugreifen?
Wenn ich nun aus einer anderen Klasse, in einer anderen Datei, heraus auf zB. ein Textfeld zugreifen möchte das sich in der GUI befindet, wie geht das? Bei mir haut das nicht hin. Bestimmt wieder etwas doofes übersehen. ;(
Zugriffe auf Attribute/Variablen anderer Klassen sollte man über get und set Methoden realisieren.
In Deinem Fall könnte die Klasse NetBuddyFrame eine Methode zum Auslesen des Wertes anbieten:
Das es mit Setter & Getter Methoden sauberer wäre ist mir wohl bekannt, da alles 'unschönerweise' auf public steht, müsste ich doch aber auch ohne diese Methoden darauf zugreifen können, oder nicht?
Wie meinst du das mit der "Referenz auf den Frame"?
Ich habe 3 Dateien: (Oder macht man das nicht so?)
- netBuddyMain.java (Start-datei)
- netBuddyFrame.java (GUI, JFrame mit einigen TextFields etc.)
- netBuddyTask.java (Hierdrin stehen berechnungen, die direkt auf die TextFields der GUI, welche in der netBuddyMain gestartet wird, zugreifen sollten. Können Sie aber nicht.)
Als der exakt gleiche Code (der jetzt in der netBuddyTask ist) noch direkt in der netBuddyMain war, lief es ohne Probleme. Jetzt sagt mir der Compiler immer nur "package not found".
Wie kann ich also von einer Klasse in einer seperaten Datei auf eine instanziierte Klasse einer anderen Datei zugreifen?
Das war ja nur als Bsp gedacht. Ich habe einen FocusListener verwendet, der anspringt wenn eine Eingabe im Textfeld abgeschlossen ist und der Fokus auf eine andere Komponente wechselt.
- netBuddyTask.java (Hierdrin stehen berechnungen, die direkt auf die TextFields der GUI, welche in der netBuddyMain gestartet wird, zugreifen sollten. Können Sie aber nicht.)
Wenn aus der Klasse heraus auf die Textfelder zugeriffen werden soll, dann muss diese Klasse auch eine Referenz auf den Frame besitzen (z.B. im Konstruktor übergeben)