• Herzlich Willkommen!

    Nach der Schließung von inDiablo.de wurden die Inhalte und eure Accounts in dieses Forum konvertiert. Ihr könnt euch hier mit eurem alten Account weiterhin einloggen, müsst euch dafür allerdings über die "Passwort vergessen" Funktion ein neues Passwort setzen lassen.

    Solltet ihr keinen Zugriff mehr auf die mit eurem Account verknüpfte Emailadresse haben, so könnt ihr euch unter Angabe eures Accountnamens, eurer alten Emailadresse sowie eurer gewünschten neuen Emailadresse an einen Administrator wenden.

problem bei java-programmierung

TitanSeal

Champion
Registriert
5 Juli 2004
Beiträge
7.993
hi :hy:

da ich im inet leider nicht fündig geworden bin, wollte ich mal hier nachfragen. ich programmiere gerade java und habe einen KeyListener implementiert, welchen ich bei drei Objekten (JTextArea) registriert habe. um nun unterscheiden zu können, welches Objekt das event ausgelöst hat, verwende ich getSource():

Code:
public void keyPressed(KeyEvent key_pressed) {
        Object key_quelle = key_pressed.getSource();

nun könnte ich für alle drei objekte eine if-abfrage machen, aber das wollte ich vermeiden. stattdessen wollte ich genau das objekt ansprechen, welches das event ausgelöst hat:
Code:
[color=red]key_quelle.append("string");[/color]
bzw
Code:
[color=red]key_pressed.getSource().append("string");[/color]
wenn ich die textfelder direkt abfrage, funktioniert alles:
Code:
text_klar.append("string");

da getSource() doch das objekt zurückgibt, welches ein event ausgelöst hat, sollten die rot gedruckten befehle doch auch funktionieren. ich bekomme allerdings die fehlermeldung "cannot find method append(java.lang.String)". kann mir jemand sagen, wo hier der fehler liegt, bzw wie der befehl richtig lauten muss?

mfg
 
Hi, Titan

Eine Klasse muss eine Methode enthalten oder erben, damit du sie darauf aufrufen kannst. Die Klasse Object kennt aber keine Methode append(String).

Key_Quelle ist ein Objekt der Klasse Object, daher kannst du darauf kein append aufrufen. Die Methode getSource liefert ja auch keinen String, sondern ein Objekt zurück.

Der letzte Aufruf funktioniert, weil text_klar augenscheinlich selbst ein String ist oder zumindest ein Typ, der eine Methode append kennt.

Ich hab noch nicht ganz genau verstanden, was du da eigentlich machen willst. Du hast 3 verschiedene Klassen implementiert, die alle von JTextArea abgeleitet sind? Du hoffst nun, mit getSource ein Objekt einer abgeleiteten Klasse zu kriegen und darauf dann das Append von JTextArea aufzurufen?

Versuch es mal mit
JtextArea key_quelle = (JtextArea)(key_pressed.getSource());
key_quelle.append("...");
 
:hy: drago
Ich hab noch nicht ganz genau verstanden, was du da eigentlich machen willst.
ich habe drei JTextAreas implementiert und alle lösen bei tastendruck ein event aus. damit ich nun weiß, woher dieses event stammt, frage ich nach seiner quelle und in diese schreibe ich dann den getippten buchstaben hinein.

mit deinem tipp funktioniert es jetzt allerdings, daher vielen dank :)

mfg
 
ich hätte noch eine frage zu java, diesmal jedoch nicht zur programmierung. wenn man keine IDE verwendet, muss man bekanntlich eine .java datei schreiben, diese mittels compiler in eine .class datei umwandeln und kann letztere mit der JRE ausführen.
ich habe nun von einem freund eine .class datei erhalten, die ich mir ansehen soll. gibt es dafür nun auch einen compiler, der mir die .class datei wieder in verständlichen java-quellcode zurückwandelt?

mfg
 
Ja es gibt Java Decompiler, aber die Variablen-, Klassen- und Membernamen werden nicht dargestellt wie ursprünglich geschrieben, sondern eben A,B,C oder ähnlich. Das macht das Verstehen sehr viel schwerer
 
Zurück
Oben