Methoden Methode in anderer .class Datei Funktioniert nicht.

Deltaspace

Mitglied
Hallo Leute,

dies ist mein erster Beitrag hier in diesem Forum da ich gerade erst mit Java angefangen habe. Ich komme aus der C-Programmierung, also nicht ganz ohne Erfahrung. Erst mal einen großen Respekt, an alle die sich hier so aktiv beteiligen.

Jetzt zu meiner Frage. Ich möchte gerne in einer Applikation eine Methode in der Datei Functions.java aufrufen und den Inhalt der Variable Userlevel verändern. Leider ändert sich der Inhalt nicht.

Hier der Code der Datei:

Java:
public class Functions 
{
  private String userlevel = new String ("NONE");
  
  public void chanceUserLevel(String user)
  {
	userlevel = user;
  }
  
  public String showUserlevel()
  {
	return userlevel;
  }
  public void exit()
  {
	  System.exit(0);
  }
}

Hier der Aufruf der Methode changeUserLevel:
Java:
Functions f = new Functions();
	  f.chanceUserLevel("A");

Die Methode showUserlevel() funktioniert ohne Probleme. Diese rufe ich wie folgt auf.
Java:
JLabel Userlevel = new JLabel(f.showUserlevel());

Auf der Swing Oberfläche bekomme ich immer nur den Initialisierungsinhalt angezeigt.
Leider finde ich den Fehler nicht. Wäre super wenn ihr mir helfen könntet.

MfG

Deltaspace
 

Helgon

Bekanntes Mitglied
Jetzt zu meiner Frage. Ich möchte gerne in einer Applikation eine Methode in der Datei Functions.java aufrufen und den Inhalt der Variable Userlevel verändern. Leider ändert sich der Inhalt nicht.

Abgesehn von der etwas unglücklichen Formulierung fehlt dir der Konstruktor

Java:
class Klasse1{

private String user;

public Klasse1(String user){
   this.user = user;
}

public void setUser(String user){
   this.user = user;
}

public String getUser(){
   return user;
}

}


Java:
class Klasse2{

public Klasse2(){}

public static void main(String[] args){
   Klasse1 irgendwas = new Klasse1("Bill");
   irgendwas.setUser("Henry");
   System.out.println(irgendwas.getUser());
}

}
 
G

Gast2

Gast
@Helgon: was hat der Konstruktor mit dem Problem zu tun?

@TO: nutzt du vielleicht zwei verschiedene Instanzen? Oder änderst du das User Level im nachhinein? poste mal etwas mehr Code.
 

Schandro

Top Contributor
Der Fehler liegt nicht an der Klasse Functions oder an desen Aufruf, sondern an der GUI. Leider hast du dessen Code nicht gepostet von daher können wir dir da nicht helfen.

Aber ein paar Tipp gibts:

1.
Java:
new String ("NONE");
macht man in Java absolut nie, man schreibt immer einfach nur
Java:
"NONE";

2. die Methode showUserlevel sollte nach den naming conventions getUserlevel heissen, da sie ja einfach nur einen Wert zurückgibt. Die Methode chanceUserLevel sollte dementsprechend setUserlevel heissen.

3. System.exit(0); sollte man im Prinzip nie aufrufen, da es erbarmungslos die komplette Java VM abschiesst, völlig egal ob ein anderer Teil des Codes vllt. noch was machen will oder ein anderer Thread noch läuft...
Falls du Probleme damit hast das Java trotz schließen deines JFrames immernoch weiterläuft, ruf mal auf das JFrame-Object
Java:
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
auf
 
Zuletzt bearbeitet:

Deltaspace

Mitglied
Ok, hier der Code der GUI Datei.

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


@SuppressWarnings("serial")
public class MainWindow extends JFrame implements ActionListener
{
	Functions f = new Functions();
	LoginWindow LoginWindow = new LoginWindow("Login");
	
	// Initialisierungen für North
	JPanel Northpanel = new JPanel();
	
	// Initialisierungen für Center
	JPanel Centerpanel = new JPanel();

	
	// Initialisierungen für South;
	JPanel Southpanel = new JPanel();
	JLabel Userlevel = new JLabel(f.getUserlevel());
	JButton Beenden = new JButton("Programm beenden");
	
	
  public MainWindow(String titel){
	  super(titel);
	  setLayout(new BorderLayout());
	  
	  // Region North
	  add("North", Northpanel);

	  
	  // Region Center
	  add("Center", Centerpanel);
	  
	  // Region South
	  Southpanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
	  Southpanel.add(Userlevel);
	  Southpanel.add(Beenden);
	  add("South", Southpanel);
	  Beenden.setActionCommand( "Beenden" );
	  Beenden.addActionListener(this);
	  
	  setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
  }
  public void actionPerformed(ActionEvent e)
  {
	if(e.getActionCommand().equals( "Beenden" ))
	{
		f.exit();
	}
	else
	{
		getContentPane().setBackground(Color.green); // Nur zum testen
	}
  }
  
}

Ich hab mir den Userlevel an dieser Stelle nur angezeigt, um festzustellen ob sich was ändert.
Die Methoden habe ich jetzt in set und get Methoden geändert.
 

njans

Top Contributor
Ich sehe nicht, wie wo du überhaupt dem Label sagst, dass es einen neuen String anzeigen soll.
Java:
JLabel Userlevel = new JLabel(f.getUserlevel());
Das führt nur dazu, dass das label einen String anzeigt, diese ist nicht damit verbunden, was du da in f als variable hinterlegst. Wenn du also nach der Initialisierung des Labels in der Zeile was an f änderst, so dass du mit getUserLevel einen anderen String zurückbekommen würdest, dann musst du das auch an das label weiterreichen:
Java:
userlevel.setText(f.getuserLevel());
Das müsste dann in den ActionListener ;)

Nebenbei schreibt man Variablen in Java am Anfang klein.
 

Deltaspace

Mitglied
Ich sehe nicht, wie wo du überhaupt dem Label sagst, dass es einen neuen String anzeigen soll.

Ich will nicht eine Änderung anzeigen. Der Userlevel wird direkt beim Starten der Applikation als erstes in public static void main gesetzt. Danach wird erst das Fenster aufgebaut. Leider Zeigt er mir aber nicht den geänderten Wert an, weswegen ich davon ausgehe, das er gar nicht umgeschrieben wird.

Ich bin gerade dabei einen Button einzubauen, mit dem ich den Userlevel ändern kann. Mal sehen was dann passiert. Dann werde ich deine Antwort berücksichtigen. Daran hätte ich so wahrscheinlich gar nicht gedacht. Danke dafür.

Edit: Mit dem Button funktioniert das ändern. Auf die Idee bin ich noch gar nicht gekommen. Jetzt muss ich meinen Fehler mal an einer anderen stelle suchen. Danke für eure Unterstützung.

Gruß

Delta.
 
Zuletzt bearbeitet:

xehpuk

Top Contributor
Hier erstellst du eine Functions-Instanz:
[JAVA=10]Functions f = new Functions();[/code]
Hier setzt du den Text des JLabel:
[JAVA=22]JLabel Userlevel = new JLabel(f.getUserlevel());[/code]
Dazwischen wurde [c]f[/c] nicht bearbeitet.

Du kannst gar nicht zu Beginn in der main-Methode diese Instanz bearbeitet haben, da sie erst beim Erzeugen einer MainWindow-Instanz erstellt wird.

Sprich: Jede Functions-Instanz hat eine eigene Variable "userlevel" vom Typ String, unabhängig von weiteren im Programm existierenden Functions-Instanzen.
 

Deltaspace

Mitglied
OK, danke.
Dann ist es wohl hier in Java nicht so einfach, einer global Verfügbare Variable zu erzeugen, wenn jede Instanz ihre eigenen hat. Deswegen bin ich ja in die Functions ausgewichen. Aber wenn das bei jeder neuen Instanz auch neu gesetzt wird, bringt mir das nix.

Danke an alle für die Hilfe.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Im JFrame Inhalte verändern per Methode aus anderer Class Java Basics - Anfänger-Themen 5
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
D Array in Main Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
M Von einem Menü Methode aus anderer Klasse ausführen, die errechnete Werte in Datei schreibt. Java Basics - Anfänger-Themen 8
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
M Klassen Methode in anderer Klasse aufrufen? Java Basics - Anfänger-Themen 3
M Methode in anderer Klasse aufrufen Java Basics - Anfänger-Themen 5
B Mit methode Objekt aus anderer Klasse erstellen Java Basics - Anfänger-Themen 6
B Schleife von anderer Methode stoppen? (Start continue) Java Basics - Anfänger-Themen 18
A OOP Variable in anderer Klasse durch Methode aufrufen und einer anderen Variable gleichsetzen Java Basics - Anfänger-Themen 2
PaperHat Methoden als Parameter anderer Methode verwenden Java Basics - Anfänger-Themen 11
J Methoden Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 12
T Methoden Auf Variabler aus anderer Methode zugreifen Java Basics - Anfänger-Themen 5
L Klassen Methode aus anderer Klasse Java Basics - Anfänger-Themen 13
M Klassen Methode aus anderer Klasse nicht aufrufbar Java Basics - Anfänger-Themen 11
F Methode anderer Klasse aufrufen Java Basics - Anfänger-Themen 1
P Aufruf Methode anderer Klasse Java Basics - Anfänger-Themen 5
N Variablen Variable in Main deklarieren und in anderer Methode nutzen Java Basics - Anfänger-Themen 12
I Rückgabewert einer Methode in anderer Klasse verwenden Java Basics - Anfänger-Themen 2
M Dynamische Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 11
T [Erledigt] Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 0
P Methoden Methode in anderer Methode aufrufen Java Basics - Anfänger-Themen 4
L Erste Schritte Methode aus anderer Klasse verwenden Java Basics - Anfänger-Themen 16
Mr. Pink Graphics2D in anderer Methode aufrufen Java Basics - Anfänger-Themen 6
C Problem mit Zugriff auf Variable bzw. get-Methode in anderer Klasse Java Basics - Anfänger-Themen 2
A Methode aus anderer Klasse Java Basics - Anfänger-Themen 5
H Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 7
M OOP ActionPerformed Methode aus anderer AP aufrufen? Java Basics - Anfänger-Themen 5
M Aus anderer Methode painten Java Basics - Anfänger-Themen 2
C Objekt X über Methode aus anderer Klasse verändert Java Basics - Anfänger-Themen 3
I Von einer Methode eines Objektes auf Attribut eines Objektes anderer Klasse zugreifen Java Basics - Anfänger-Themen 4
S Main-Methode aus anderer Klasse heraus starten Java Basics - Anfänger-Themen 8
S Zugriff auf Methode anderer Klasse Java Basics - Anfänger-Themen 6
I Kein Zugriff auf erstelltes Objekt aus anderer Methode Java Basics - Anfänger-Themen 6
H Methode aus anderer Datei aufrufen Java Basics - Anfänger-Themen 11
T Aufrufen von get-Methode aus anderer Klasse (absolute Anfängerfrage) Java Basics - Anfänger-Themen 2
D Variable einer Methode in anderer Methode aufrufen Java Basics - Anfänger-Themen 19
J Methode anderer Klasse aufrufen ;-) Java Basics - Anfänger-Themen 5
B Methode aus anderer Klasse verwenden Java Basics - Anfänger-Themen 11
G JTabbedPane zugriff von anderer Methode Java Basics - Anfänger-Themen 2
E Methode aus anderer Klasse ausführen Java Basics - Anfänger-Themen 3
I Festellen wann Methode in anderer Klasse fertig ist Java Basics - Anfänger-Themen 5
G Kann methode aus anderer Klasse nicht aufrufen Java Basics - Anfänger-Themen 7
S JTextField in anderer Classe mit getter Methode auslesen. Java Basics - Anfänger-Themen 2
G private methode wird aus anderer klasse aufgerufen? Java Basics - Anfänger-Themen 3
A Auf ausgewählte Items der Liste in anderer Methode zugreifen Java Basics - Anfänger-Themen 3
EagleEye methode in anderer java datei aufrufen Java Basics - Anfänger-Themen 27
T Rekursive Methode Java Basics - Anfänger-Themen 13
Ü Methode soll Quadrat aus der Summer zurückgeben Java Basics - Anfänger-Themen 10
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
Leyla Spezifischte Methode Java Basics - Anfänger-Themen 16
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
T Aufruf der Methode einer Oberklasse, wenn sie in der Unterklasse überschrieben ist. Polymorphie. Java Basics - Anfänger-Themen 2
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
M Methode sperren bis ein Kriterium erfüllt wurde Java Basics - Anfänger-Themen 3
D Switch Case Methode aufrufen Java Basics - Anfänger-Themen 3
C Unbekannte Methode add bei Klasse die JTree erweitert Java Basics - Anfänger-Themen 14
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
Say super.methode / super.variable und super(variable) Java Basics - Anfänger-Themen 2
B Wie kann ich folgende Klasse/Methode per Button ausführen? Java Basics - Anfänger-Themen 1
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
til237 Iterative Methode in rekursive Methode umschreiben Java Basics - Anfänger-Themen 4
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
D next() Methode mehrfach verwenden Java Basics - Anfänger-Themen 1
Ostkreuz Methoden Von Dezimal zu Hexadezimal Methode toHex Java Basics - Anfänger-Themen 2
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
N Throw an Main Methode übergeben Java Basics - Anfänger-Themen 7
M Methoden Methode 'wiederhole' nicht gefunden (Uebersetzungsfehler) Java Basics - Anfänger-Themen 1
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
M Anzahl Kommandozeilenparamter mittels Methode Java Basics - Anfänger-Themen 11
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
D Methode aus dem Aufrufer aufrufen Java Basics - Anfänger-Themen 1
T IOStreams read(byte[]b) methode Java Basics - Anfänger-Themen 2
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
D Warum kann ich hier nicht auf die Methode zugreifen? Java Basics - Anfänger-Themen 5
M generate Methode für Streams Java Basics - Anfänger-Themen 6
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
I Optionaler Parameter bei Methode, der nur optional ist? Java Basics - Anfänger-Themen 6
berserkerdq2 Wozu benötigt man den BiPredicate, kann ich nicht einfach eine normale Methode nutzen, statt BiPredicate? Java Basics - Anfänger-Themen 3
T Linked List set-Methode Java Basics - Anfänger-Themen 2
D Arrays an replaceAll-Methode übergeben Java Basics - Anfänger-Themen 12
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32

Ähnliche Java Themen

Neue Themen


Oben