ID an Steuerklasse weiterleiten

snowman85

Grünschnabel
Hallo leute,

ich habe folgendes Problem: Ich habe ein Klasse mit der ich ID aus einer xml-Datei auslese, welche starkgekürzt so aussieht ->
Code:
public class RezeptPanel extends JPanel{
	public RezeptPanel(){
            int mengeAllerRezepteBestimmen()
		throws Exception{
		
		// Auslesen der Rezepte-ID
		SAXReader sp = new SAXReader();
		
		Document doc = sp.read("src/Rezept_Schema.xml");
		
		List nodes = doc.selectNodes("/rezeptexml/rezept/@rezept_id");
		
		Object a[] = nodes.toArray();
		
		int letztesRez = a.length;
		
		return  letztesRez;
	}

und eine Steuerungsklasse der ich das Resultat übergeben möchte ->

Code:
public class RezeptKnopfZurueckStrg implements ActionListener{
	private RezeptPanel rp ;
	int i = rp.mengeAllerRezepteBestimmen();
	
	public RezeptKnopfZurueckStrg(RezeptPanel p) {
		rp = p;
	}
	
	public void actionPerformed(ActionEvent e) {
		try{
			rp.setZubereitung();
			rp.setRezept();
			String hol = rp.naechstesRezept(i);
			System.out.println("Erg " + hol);
			rp.getRezeptID(hol);
		}
		catch(Exception ex2){
			System.err.println("Fehler");
		}
		finally{
			i--;
		}
		
	}
}

das auslesen geht aber, wenn ich in der zweiten Klasse den int Wert setzen möchte, wird mir gesagt das die Exception nich behandelt wird. Meine Frage ist nun: Wie kann ich den Fehler beheben?

Wäre super wenn mir da einer helfen könnte :rolleyes:
 
Hi,
Mir fällt auf, dass Du in Der Klasse RezeptKnopfZurueckStrg irgendwie die Instanziierung oder initialisierung offenbar vergessen hast.
Du deklarierst rp aber es hat keinen Wert, Du möchtest aber in der nächsten Zeile gleich was davon abrufen. das funktioniert natürlich so nicht. es sei denn das die Routine mengeAllerRezepteBestimmen statischer Natur wäre.

Nebenbei bin ich nicht sicher wie Deine Fehlermeldung genau heißt. Falls Du mit der IDE Eclipse arbeitest, hätte ich eine Initialisierung-Fehlermeldung bzw. Wahrnung angenommen.
 
Erstmal Vielen Dank für die Antwort, ich hab bei der Methode jetzt mal ein static davor geschrieben und die Fehlermeldung bleib ->

Unhandled exception type Exception

ich weiß absolut nicht was ich da machen kann :confused:
 
Das Static ist egal.

Java:
public class RezeptKnopfZurueckStrg implements ActionListener{
	private RezeptPanel rp ;
	int i = rp.mengeAllerRezepteBestimmen();
}

Sobald du dieses Klasse das erste mal aufrufst, werden diese beiden Zeilen abgearbeitet - und zwar VOR allem anderen.

D.h. du hast ein nicht initialisiertes rp, von dem du im nächsten Schritt versuchst, die Menge aller Rezepte zu bestimmen. Also ein Methoden-Aufruf auf ein null-Objekt => Problem.

Halbwegs richtig wäre
Java:
public class RezeptKnopfZurueckStrg implements ActionListener{
	private RezeptPanel rp ;
	int i;	

	public RezeptKnopfZurueckStrg(RezeptPanel p) {
		rp = p;
                                i = rp.mengeAllerRezepteBestimmen();
	}
}

Ob das dein Problem schon löst, kann ich bei deiner knappen Fehlerbeschreibung nicht sagen. In welcher Zeile wird die Exception geworfen?
 
Ja, das ist es meine Steuerklasse sieht jetzt so aus

Code:
public class RezeptKnopfZurueckStrg implements ActionListener{
	private RezeptPanel rp;
	int i;
	
	public RezeptKnopfZurueckStrg(RezeptPanel p) {
		try{
			rp = p;
			i = rp.mengeAllerRezepteBestimmen();
		}
		catch(Exception ex0){
			
		}
	}
	
	public void actionPerformed(ActionEvent e) {
		try{
			rp.setZubereitung();
			rp.setRezept();
			String hol = rp.naechstesRezept(i);
			System.out.println("Erg " + hol);
			rp.getRezeptID(hol);
		}
		catch(Exception ex2){
			System.err.println("Fehler");
		}
		finally{
			i--;
		}
		
	}
}

und es funktioniert :-) traumhaft. :-)

Vielen Dank takidoso und shutdown ;-)
 
Zurück