Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich steh gerade etwas aufm Schlauch =/ ... ich umreisse mal mein Problem:
ich habe eine Klasse "MasterFrame" von der ich genau ein Objekt erzeuge. Damit andere Objekte deren Methoden benutzen können habe ich ihm eine Referenz gegeben "master".
Java:
public static MasterFrame master;
public static void main(String[] args){
master = new MasterFrame();
}
Der Konstruktor vom master-Objekt ruft nun ein haufen zeug auf um dem Programm eine Form zu geben.
Jetzt habe ich einen Dialog der geöffnet wird und in dem man einstellungen machen kann die sich auf das master-Objekt beziehen (Der Dialog ist eine eigene andere Klasse). Die Informationen die in diesem Objekt eingestellt werden (in diesem fall der String a), sollen jetzt im master-Objekt in eine Methode die das weiter verarbeitet:
Java:
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("textfeld")){
String a = textfeld.getText();
MasterFrame.master.makeNeuesammlung(a); <---------
}
Die Zeile mit dem Pfeil ist das Problem, er findet das master-Objekt nicht ... ich weiss nicht woran es liegt. Ist doch ne Klare ansage an Java ... es hat nen Namen und ne Methode ...
eigentlich müsste es doch auch so funktionieren
Java:
master.makeNeuesammlung(a);
Vermutlich habe ich etwas Grundlegendes vergessen ... bisher lief es so gut aber das Problem verstehe ich gerade nicht ...
Es kann eigentlich nur daran liegen, dass der erste Code mit der main nicht in der Klasse MasterFrame liegt. Wenn der Code z.B. in der Klasse "Test" liegt musst du Test.master.makeNeuesammlung(a) aufrufen.
Nebenbei: Wenn du eine Klasse hast von der du sicher bist, dass nur eine Instanz benötigt wird, lohnt es sich mal das Singleton Pattern anzusehen. Denn public static und nicht final ist sehr unschön. Das Pattern sieht etwa so aus:
Java:
public class MasterFrame {
private static MasterFrame instance;
private MasterFrame() {
// ...
}
public static MasterFrame getInstance() {
if ( instance == null ) {
instance = new MasterFrame();
}
return instance;
}
}
Zugriff erfolgt dann über MasterFrame.getInstance()
Heisst die Klasse in der deine Main ist denn MasterFrame? Falls nein müsstest du den Namen der Main Klasse schreiben, also MainKlasse.master.makeNeueSammlung(a);
Wenn schon Singleton dann bitte richtig! getInstance synchronized. Bzw double Checked locking, wenn man noch ein bisschen an Performance denkt. Sonst ist das ganze nicht Thread Safe