Ich habe ein Programm, das mehrere externe Listenerklassen hat... also mit einer eigenständigen .class
Ich möchte nun diese Klassen in einem Package verpacken. Das hat alles funktioniert. Das Problem ist jetzt jedoch, dass die Listenerklassen auf Objekte von Klassen ausserhalb des Packages zugreiffen können. Sie sollen die repaint()-Methode aufrufen können.
Die Struktur sieht etwa so aus:
Ordner {
Klasse NDamenProblem (Hier wird zuerst Schachbrett sb = new... und anschliessend die ListenerObjekte erzeugt)
Klasse Schachbrett (Hier befindet sich paintComponent())
Package listener {
ButtonListener (Von hier soll sb.repaint() aufgerufen werden können)
SliderListener
}
}
Ich hoffe das hilft etwas zur übersicht ;-)
Jetzt soll der ButtonListener auf sb (das Objekt der Klasse Schachbrett) zugreiffen können und sb.repaint() aufrufen. Das Objekt sb wird in der Klasse NDamenProblem mit dem new-Operator erzeugt. Bei der erzeugung der ListenerKlassen wird sb als Parameter übergeben.
Dies funktioniert jedoch leider nicht.
Falls ihr etwas ProgrammCode braucht kann ich den gerne nachliefern. Ich wollte nur nicht den ganzen hier reinkopieren, den der ist ca. 500 Zeilan lang ^^ Ich bin mir nicht sicher... aber könnte man für so etwas einen JTree verwenden?
Ich hoffe, dass das hier wirklich zu den Anfängerfragen gehört und net irgendwo anders hin. Falls schon, bitte verschieben ;-)
JTree? :autsch: Was hat denn der damit zu tun? Hilft vielleicht hier http://www.java-forum.org/java-basics-anfaenger-themen/80658-static.html der letzte Beitrag? (Im Konstruktor des Listeners das Objekt übergeben, auf dem die Methode aufgerufen werden soll... in deinem Fall könnte da wohl eine JComponent übergeben werden, weil ja NUR die repaint-Methode gebraucht wird...)
Ömm, kp was mich da geritten hat mit dem JTree. Ich hatte noch andere Dinge im Kopf als ich das geschrieben habe ^^
Ich habe die Objekte schon richtig übergeben. Aber ich glaube ich weiss woran das liegt. Ich habe die Methode paintComponent als 'protected' deklariert. Diese Methode kann also nicht ausserhalb des Packages gefunden werden oder?