Probleme mit Klassenmodell für JTable

Status
Nicht offen für weitere Antworten.

Java Light

Aktives Mitglied
Hallo zusammen


ich habe grosse Probleme mit meinem Klassenmodell für die JTable. Zuerst hatte ich eine Klasse (Klassenmodell) innerhalb einer anderen Klasse erstellt. Ich wollte dann auf die Klasse innerhalb der Klasse zugreifen, leider habe ich dies dann nicht geschafft. Ich habe mich deshalb entschlossen ein eigenes Klassenmodell zu erstellen. Leider funktioniert seit diesem Zeitpunkt überhaupt nichts mehr. Folgender Fehler erscheint:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at org.jdom.input.SAXBuilder.fileToURL(SAXBuilder.java:925)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:788)
at FahrplanXML.Saxwe.<init>(Saxwe.java:52)
at FahrplanXML.ModellTabelle.<init>(ModellTabelle.java:30)
at FahrplanXML.Detailoberflaeche.grundoberflaechen(Detailoberflaeche.java:387)
...


Wenn ich debugge, passiert der Fehler am folgenden Ort, sobald ich das Tabellenmodell (modelle = new ModellTabelle();) aufrufe, kommt die oben genannte Fehlermeldung. Die Klasse in welcher ich das Tabellenmodell aufrufe sieht wie folgt aus (Fehler: Zeile 387):



Code:
package FahrplanXML;

import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;

import org.jdom.JDOMException;

public class Detailoberflaeche {
		
		// Variablendeklaration dynmaische Daten
		String sendersTimeSeriesIdentificationvxml;	
		String sendersTimeSeriesVersionvxml;
		String businessTypexml;
		String productvxml;
		String objectAggregationvxml;
		String outAreavxml;
		String outAreaCodingSchemexml;
		String outPartyvxml;
		String outPartyCodingSchemexml;
		String measurementUnitvxml;
		String timeIntervalvxml;
		String resolutionvxml;
		//ArrayList<String> attributWertvxml;
		public int zaehler = 0;
		public Saxwe xmlsax;
		public XmlSave xmlsave;
		public ModellTabelle modelle;
		private JTable tabelle;
		public JTextField Dtd;
		
		String wert1;
		
		
		//Textfelder global definieren
		JTextField senderstimeseriesidentification;
		JTextField senderstimeseriesversion;
		JTextField businesstype;
		JTextField product;
		JTextField objectaggregation;
		JTextField outarea;
		JTextField outareacodingscheme;
		JTextField outparty;
		JTextField outpartycodingscheme;
		JTextField measurementunit;
		JTextField timeinterval;
		JTextField resolution;

		//**********************************//
		// Variablendek für Tabellenmodell //
		//********************************//
		
		//Array 1 für Position für Datenübergabe an SaveFile
		int position[] = new int[1000];
		int zaehlerpos = 0;
		//Array 2 für Zähler für Datenübergabe an SaveFile
		//Array 3 für Wert für Datenübergabe an SaveFile
		String werte[] = new String[1000];
		
		
		
		//zaehler uebergeben
		public int getZaehler() {
			return zaehler; 	
		}			
		
		//******************************************//
		//       Konstruktor Detailoberflaeche     //
		// File Auswaehlen und Saxwer mit 0 laden // 
		//***************************************//
		
		public Detailoberflaeche() throws JDOMException, IOException {
			
			//	File Auswählen aufrufen
			FileAuswahl fileauswaehlen = new FileAuswahl();
			fileauswaehlen.FileAuswaehlen();
			File filename = fileauswaehlen.getNames();
			
			//filename an Saxwer übergeben und Saxwer aufrufen
			System.out.print(filename);
			xmlsax = new Saxwe(filename);
			xmlsax.saxwer(0);
			
		}
		
//		Layout für Laender vorbereiten
		public void addComponent (Container cont,
				GridBagLayout diversemoegl,
				Component laenderdetails,
				int x, int y,
				int width, int height,
				double weightx, double weighty )

	
		{
				
				GridBagConstraints grundoberflaechen = new GridBagConstraints();
				grundoberflaechen.fill = GridBagConstraints.BOTH;
				grundoberflaechen.gridx = x; grundoberflaechen.gridy = y;
				grundoberflaechen.gridwidth = width; grundoberflaechen.gridheight = height;
				grundoberflaechen.weightx = weightx; grundoberflaechen.weighty = weighty;
				diversemoegl.setConstraints(laenderdetails, grundoberflaechen);
				cont.add(laenderdetails);
				
		} 
		

		
//		Layout machen
		public void grundoberflaechen() throws JDOMException, IOException {


			
			
			final JFrame fahrplan = new JFrame("Fahrplanauswahldetails");
			fahrplan.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			Container laenderdetails = fahrplan.getContentPane();
			GridBagLayout diversemoegl = new GridBagLayout();
			laenderdetails.setLayout(diversemoegl);
			
			
			
			
			// Zeile 0 Button und Action Listener einbauen
			JButton vorwaerts = new JButton ("Nächster Fahrplan");
			JButton rueckwaerts = new JButton ("Voriger Fahrplan");
			
			// Letzte Zeile einbauen eines Listeners zum abspeichern der Daten
			JButton save = new JButton("Abspeichern");
			
			//Action Listener für Vorwärts
			ActionListener vorwaertsaction = new ActionListener()
			{
				public void actionPerformed( ActionEvent e)
				{
					
					++zaehler;				
					try {
						System.out.println(zaehler);
						xmlsax.saxwer(zaehler);
					} catch (JDOMException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					} catch (IOException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}	
				
					//Daten neu laden mit zaehler
					senderstimeseriesidentification.setText(xmlsax.getSenderTimeSeriesIdentification());
					senderstimeseriesversion.setText(xmlsax.getSenderTimeSeriesVersion());
					businesstype.setText(xmlsax.getBusinesstype());
					product.setText(xmlsax.getProduct());
					objectaggregation.setText(xmlsax.getObjectAggregation());
					outarea.setText(xmlsax.getOutArea());
					outareacodingscheme.setText(xmlsax.getOutAreaCodingScheme());
					outparty.setText(xmlsax.getOutParty());
					outpartycodingscheme.setText(xmlsax.getOutPartyCodingScheme());
					measurementunit.setText(xmlsax.getMeasurementUnit());
					timeinterval.setText(xmlsax.getTimeInterval());
					resolution.setText(xmlsax.getResolution());
					
					//Tabelle erneuern
					ModellTabelle tabellenmodell = null;
					try {
						tabellenmodell = new ModellTabelle();
					} catch (JDOMException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					} catch (IOException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
					tabelle.setModel(tabellenmodell);

					
					
					
				}
			};
			
			vorwaerts.addActionListener(vorwaertsaction);
			
			
			//Action Listener für Rückwärts
			ActionListener rueckwaertsaction = new ActionListener()
			{
				public void actionPerformed( ActionEvent e)
				{
					
					--zaehler;				
					
					if (zaehler < 0) {
						
						//Anzeigebox aufmachen
						System.out.println("Sie haben den ersten Fahrplan erreicht.");
						++zaehler;
					}
					else {
					
						try {
							System.out.println(zaehler);
							xmlsax.saxwer(zaehler);
						} catch (JDOMException e1) {
							// TODO Auto-generated catch block
							e1.printStackTrace();
						} catch (IOException e1) {
							// TODO Auto-generated catch block
							e1.printStackTrace();
						}

						//Daten neu laden mit zaehler
						senderstimeseriesidentification.setText(xmlsax.getSenderTimeSeriesIdentification());
						senderstimeseriesversion.setText(xmlsax.getSenderTimeSeriesVersion());
						businesstype.setText(xmlsax.getBusinesstype());
						product.setText(xmlsax.getProduct());
						objectaggregation.setText(xmlsax.getObjectAggregation());
						outarea.setText(xmlsax.getOutArea());
						outareacodingscheme.setText(xmlsax.getOutAreaCodingScheme());
						outparty.setText(xmlsax.getOutParty());
						outpartycodingscheme.setText(xmlsax.getOutPartyCodingScheme());
						measurementunit.setText(xmlsax.getMeasurementUnit());
						timeinterval.setText(xmlsax.getTimeInterval());
						resolution.setText(xmlsax.getResolution());
				
						//Tabelle erneuern
						ModellTabelle tabellenmodell = null;
						try {
							tabellenmodell = new ModellTabelle();
						} catch (JDOMException e1) {
							// TODO Auto-generated catch block
							e1.printStackTrace();
						} catch (IOException e1) {
							// TODO Auto-generated catch block
							e1.printStackTrace();
						}
						tabelle.setModel(tabellenmodell);
					
					}
				}
			};
			
			rueckwaerts.addActionListener(rueckwaertsaction);
			
//			Action Listener für Abspeichern
			ActionListener abspeichern = new ActionListener()
			{
				public void actionPerformed( ActionEvent e)
				{
					
					
					try {
					xmlsave = new XmlSave();
					} catch (JDOMException e2) {
						// TODO Auto-generated catch block
						e2.printStackTrace();
					} catch (IOException e2) {
						// TODO Auto-generated catch block
						e2.printStackTrace();
					}
					try {
						xmlsave.XmlOutput();
					} catch (IOException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
					
				}
			};
			
			save.addActionListener(abspeichern);
			
			
			
			//Zeile 2
			Dtd = new JTextField(15);
			Dtd.setText(xmlsax.scheduleDtdVersion);
			
			
			JTextField DtdRelease = new JTextField(15);
			DtdRelease.setText(xmlsax.scheduleDtdRelease);
			
			//Zeile 3
			JTextField messageidentification = new JTextField(15);
			messageidentification.setText(xmlsax.messageidentification);
			
			JTextField messageversion = new JTextField(15);
			messageversion.setText(xmlsax.messageversion);
			
			JTextField messagetype = new JTextField(15);
			messagetype.setText(xmlsax.messagetype);
			
			//Zeile 4
			JTextField processtype = new JTextField(15);
			processtype.setText(xmlsax.processtype);
			
			JTextField scheduleclassificationtype = new JTextField(15);
			scheduleclassificationtype.setText(xmlsax.scheduleclassificationtype);
			
			//Zeile 5
			JTextField senderidentification = new JTextField(15);
			senderidentification.setText(xmlsax.senderidentification);
			
			JTextField senderidentificationcodingscheme = new JTextField(15);
			senderidentificationcodingscheme.setText(xmlsax.senderidentificationcodingscheme);

			JTextField senderrole = new JTextField(15);
			senderrole.setText(xmlsax.senderrole);
			
			//Zeile 6
			JTextField receiveridentification = new JTextField(15);
			receiveridentification.setText(xmlsax.receiveridentification);
			
			JTextField receiveridentificationcodingscheme = new JTextField(15);
			receiveridentificationcodingscheme.setText(xmlsax.receiveridentificationcodingscheme);
			
			JTextField receiverrole = new JTextField(15);
			receiverrole.setText(xmlsax.receiverrole);
			
			//Zeile 7
			JTextField messagedatetime = new JTextField(15);
			messagedatetime.setText(xmlsax.messagedatetime);
			JTextField scheduletimeinterval = new JTextField(15);
			scheduletimeinterval.setText(xmlsax.scheduletimeinterval);
			
			
			//*******************//
			// Variable Anzeige //
			//*****************//
			
			//			Zeile 10
			senderstimeseriesidentification = new JTextField(15);
			senderstimeseriesidentification.setText(xmlsax.getSenderTimeSeriesIdentification());
			senderstimeseriesversion = new JTextField(15);
			senderstimeseriesversion.setText(xmlsax.getSenderTimeSeriesVersion());
			
			//Zeile 11
			businesstype = new JTextField(15);
			businesstype.setText(xmlsax.getBusinesstype());
			product = new JTextField(15);
			product.setText(xmlsax.getProduct());
			objectaggregation = new JTextField(15);
			objectaggregation.setText(xmlsax.getObjectAggregation());
			
			//Zeile 12
			outarea = new JTextField(15);
			outarea.setText(xmlsax.getOutArea());
			outareacodingscheme = new JTextField(15);
			outareacodingscheme.setText(xmlsax.getOutAreaCodingScheme());
			
			//Zeile 13
			outparty = new JTextField(15);
			outparty.setText(xmlsax.getOutParty());
			outpartycodingscheme = new JTextField(15);
			outpartycodingscheme.setText(xmlsax.getOutPartyCodingScheme());
			
			//Zeile 14
			measurementunit = new JTextField(15);
			measurementunit.setText(xmlsax.getMeasurementUnit());
			timeinterval = new JTextField(15);
			timeinterval.setText(xmlsax.getTimeInterval());
			resolution = new JTextField(15);
			resolution.setText(xmlsax.getResolution());
			
			
			//Zeile 15 Tabelle mit Energiewerten
			
			System.out.println(xmlsax.getAttributWert());
			
			
			
			modelle = new ModellTabelle();
			tabelle = new JTable(modelle);

			
			
			
			//***************************//
			//* Komponenten hinzufügen *//
			//*************************//
			
			//Zeile 0
			addComponent(laenderdetails,diversemoegl,new JLabel("Fahrplandetails"),0,0,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,rueckwaerts,2,0,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,vorwaerts,4,0,1,1,0,0);
			//Zeile 1
			addComponent(laenderdetails,diversemoegl,new JLabel("Schedule Message"),0,1,1,1,0,0);
			//Zeile 2
			addComponent(laenderdetails,diversemoegl,new JLabel("Dtd Version"),0,2,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,Dtd,1,2,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,new JLabel("Dtd Release"),2,2,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,DtdRelease,3,2,1,1,0,0);
			//Zeile 3
			addComponent(laenderdetails,diversemoegl,new JLabel("Message Identification"),0,3,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,messageidentification,1,3,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,new JLabel("Message Version"),2,3,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,messageversion,3,3,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,new JLabel("Message Type"),4,3,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,messagetype,5,3,1,1,0,0);
			//Zeile 4
			addComponent(laenderdetails,diversemoegl,new JLabel("Process Type"),0,4,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,processtype,1,4,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,new JLabel("Schedule Classification Type"),2,4,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,scheduleclassificationtype,3,4,1,1,0,0);
			
			//Zeile 5
			addComponent(laenderdetails,diversemoegl,new JLabel("Sender Identification"),0,5,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,senderidentification,1,5,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,new JLabel("Sender Identification Coding Scheme"),2,5,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,senderidentificationcodingscheme,3,5,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,new JLabel("Sender Role"),4,5,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,senderrole,5,5,1,1,0,0);

			//Zeile 6
			addComponent(laenderdetails,diversemoegl,new JLabel("Receiver Identification"),0,6,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,receiveridentification,1,6,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,new JLabel("Receiver Identification Coding Scheme"),2,6,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,receiveridentificationcodingscheme,3,6,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,new JLabel("Receiver Role"),4,6,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,receiverrole,5,6,1,1,0,0);
			
			//Zeile 7
			addComponent(laenderdetails,diversemoegl,new JLabel("Message Date and Time"),0,7,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,messagedatetime,1,7,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,new JLabel("Schedule Time Interval"),2,7,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,scheduletimeinterval,3,7,1,1,0,0);
			
			//Zeile 8 und 9
			addComponent(laenderdetails,diversemoegl,new JLabel("Zeile Abstand"),0,8,7,1,1,0);
			addComponent(laenderdetails,diversemoegl,new JLabel("Schedule Time Series"),0,9,7,1,1,0);
			
			//Zeile 10
			addComponent(laenderdetails,diversemoegl,new JLabel("Sender Time Series Identification"),0,10,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,senderstimeseriesidentification,1,10,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,new JLabel("Sender Time Series Version"),2,10,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,senderstimeseriesversion,3,10,1,1,0,0);
			
			//Zeile 11
			addComponent(laenderdetails,diversemoegl,new JLabel("Business Type"),0,11,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,businesstype,1,11,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,new JLabel("Product"),2,11,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,product,3,11,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,new JLabel("Object Aggregation"),4,11,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,objectaggregation,5,11,1,1,0,0);
			
			//Zeile 12
			addComponent(laenderdetails,diversemoegl,new JLabel("Out Area"),0,12,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,outarea,1,12,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,new JLabel("Out Area Coding Scheme"),2,12,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,outareacodingscheme,3,12,1,1,0,0);
			
			//Zeile 13
			addComponent(laenderdetails,diversemoegl,new JLabel("Out Party"),0,13,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,outparty,1,13,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,new JLabel("Out Party Coding Scheme"),2,13,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,outpartycodingscheme,3,13,1,1,0,0);
			
			//Zeile 14
			addComponent(laenderdetails,diversemoegl,new JLabel("Measurement Unit"),0,14,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,measurementunit,1,14,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,new JLabel("Time Interval"),2,14,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,timeinterval,3,14,1,1,0,0);
			addComponent(laenderdetails,diversemoegl,new JLabel("Resolution"),4,14,1,1,1,0);
			addComponent(laenderdetails,diversemoegl,resolution,5,14,1,1,0,0);
			
			//Zeile 15 und Zeile 16 Tabelle hinzufügen
			addComponent(laenderdetails,diversemoegl,new JLabel(""),0,15,25,1,1,0);
			System.out.println(zaehler);
			addComponent(laenderdetails,diversemoegl,new JLabel("Energiewerte Fahrplan ", zaehler),0,16,25,1,1,0);
			addComponent(laenderdetails,diversemoegl,new JScrollPane(tabelle),0,17,5,1,0,0);
			addComponent(laenderdetails,diversemoegl,save,0,19,1,1,0,0);
			
			fahrplan.setSize(1400,1000);
			fahrplan.setVisible(true);


		}		
		

		
}


Der Code für das Tabellenmodell sieht folgendemassen aus:

Code:
package FahrplanXML;

import java.io.File;
import java.io.IOException;

import org.jdom.JDOMException;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;

class ModellTabelle extends AbstractTableModel {
	
	public int zaehler;
	//Array 1 für Position für Datenübergabe an SaveFile
	int position[] = new int[1000];
	int zaehlerpos = 0;
	//Array 2 für Zähler für Datenübergabe an SaveFile
	//Array 3 für Wert für Datenübergabe an SaveFile
	String werte[] = new String[1000];
	public Saxwe xmlsax;
	private String[][] daten;
	private String[] datenueberschrift;
	
	//Konstruktor
	public ModellTabelle() throws JDOMException, IOException {
	
	
	
	//FileAuswahl fileauswaehlen = new FileAuswahl();
	//File filename = fileauswaehlen.getNames();
	xmlsax = new Saxwe(null);
	
	Detailoberflaeche detail = new Detailoberflaeche();
	zaehler = detail.getZaehler();
	
	String[] datenueberschrift = {
		      "Stunde / Minuten", "15 Minuten", "30 Minuten", "45 Minuten", "60 Minuten"
		    };
	
String[][] daten = {
		      { "Stunde 1", xmlsax.getAttributWert().get(0 + zaehler * 96), xmlsax.getAttributWert().get(1 + zaehler * 96), xmlsax.getAttributWert().get(2 + zaehler * 96), xmlsax.getAttributWert().get(3 + zaehler * 96), },
		      { "Stunde 2", xmlsax.getAttributWert().get(4 + zaehler * 96), xmlsax.getAttributWert().get(5 + zaehler * 96), xmlsax.getAttributWert().get(6 + zaehler * 96), xmlsax.getAttributWert().get(7 + zaehler * 96), }, 
		      { "Stunde 3", xmlsax.getAttributWert().get(8 + zaehler * 96), xmlsax.getAttributWert().get(9 + zaehler * 96), xmlsax.getAttributWert().get(10 + zaehler * 96), xmlsax.getAttributWert().get(11 + zaehler * 96), },
		      { "Stunde 4", xmlsax.getAttributWert().get(12 + zaehler * 96), xmlsax.getAttributWert().get(13 + zaehler * 96), xmlsax.getAttributWert().get(14 + zaehler * 96), xmlsax.getAttributWert().get(15 + zaehler * 96), },
		      { "Stunde 5", xmlsax.getAttributWert().get(16 + zaehler * 96), xmlsax.getAttributWert().get(17 + zaehler * 96), xmlsax.getAttributWert().get(18 + zaehler * 96), xmlsax.getAttributWert().get(19 + zaehler * 96), },
		      { "Stunde 6", xmlsax.getAttributWert().get(20 + zaehler * 96), xmlsax.getAttributWert().get(21 + zaehler * 96), xmlsax.getAttributWert().get(22 + zaehler * 96), xmlsax.getAttributWert().get(23 + zaehler * 96), },
		      { "Stunde 7", xmlsax.getAttributWert().get(24 + zaehler * 96), xmlsax.getAttributWert().get(25 + zaehler * 96), xmlsax.getAttributWert().get(26 + zaehler * 96), xmlsax.getAttributWert().get(27 + zaehler * 96), },
		      { "Stunde 8", xmlsax.getAttributWert().get(28 + zaehler * 96), xmlsax.getAttributWert().get(29 + zaehler * 96), xmlsax.getAttributWert().get(30 + zaehler * 96), xmlsax.getAttributWert().get(31 + zaehler * 96), },
		      { "Stunde 9", xmlsax.getAttributWert().get(32 + zaehler * 96), xmlsax.getAttributWert().get(33 + zaehler * 96), xmlsax.getAttributWert().get(34 + zaehler * 96), xmlsax.getAttributWert().get(35 + zaehler * 96), },
		      { "Stunde 10", xmlsax.getAttributWert().get(36 + zaehler * 96), xmlsax.getAttributWert().get(37 + zaehler * 96), xmlsax.getAttributWert().get(38 + zaehler * 96), xmlsax.getAttributWert().get(39 + zaehler * 96), },
		      { "Stunde 11", xmlsax.getAttributWert().get(40 + zaehler * 96), xmlsax.getAttributWert().get(41 + zaehler * 96), xmlsax.getAttributWert().get(42 + zaehler * 96), xmlsax.getAttributWert().get(43 + zaehler * 96), },
		      { "Stunde 12", xmlsax.getAttributWert().get(44 + zaehler * 96), xmlsax.getAttributWert().get(45 + zaehler * 96), xmlsax.getAttributWert().get(46 + zaehler * 96), xmlsax.getAttributWert().get(47 + zaehler * 96), },
		      { "Stunde 13", xmlsax.getAttributWert().get(48 + zaehler * 96), xmlsax.getAttributWert().get(49 + zaehler * 96), xmlsax.getAttributWert().get(50 + zaehler * 96), xmlsax.getAttributWert().get(51 + zaehler * 96), },
		      { "Stunde 14", xmlsax.getAttributWert().get(52 + zaehler * 96), xmlsax.getAttributWert().get(53 + zaehler * 96), xmlsax.getAttributWert().get(54 + zaehler * 96), xmlsax.getAttributWert().get(55 + zaehler * 96), },
		      { "Stunde 15", xmlsax.getAttributWert().get(56 + zaehler * 96), xmlsax.getAttributWert().get(57 + zaehler * 96), xmlsax.getAttributWert().get(58 + zaehler * 96), xmlsax.getAttributWert().get(59 + zaehler * 96), },
		      { "Stunde 16", xmlsax.getAttributWert().get(60 + zaehler * 96), xmlsax.getAttributWert().get(61 + zaehler * 96), xmlsax.getAttributWert().get(62 + zaehler * 96), xmlsax.getAttributWert().get(63 + zaehler * 96), },
		      { "Stunde 17", xmlsax.getAttributWert().get(64 + zaehler * 96), xmlsax.getAttributWert().get(65 + zaehler * 96), xmlsax.getAttributWert().get(66 + zaehler * 96), xmlsax.getAttributWert().get(67 + zaehler * 96), },
		      { "Stunde 18", xmlsax.getAttributWert().get(68 + zaehler * 96), xmlsax.getAttributWert().get(69 + zaehler * 96), xmlsax.getAttributWert().get(70 + zaehler * 96), xmlsax.getAttributWert().get(71 + zaehler * 96), },
		      { "Stunde 19", xmlsax.getAttributWert().get(72 + zaehler * 96), xmlsax.getAttributWert().get(73 + zaehler * 96), xmlsax.getAttributWert().get(74 + zaehler * 96), xmlsax.getAttributWert().get(75 + zaehler * 96), },
		      { "Stunde 20", xmlsax.getAttributWert().get(76 + zaehler * 96), xmlsax.getAttributWert().get(77 + zaehler * 96), xmlsax.getAttributWert().get(78 + zaehler * 96), xmlsax.getAttributWert().get(79 + zaehler * 96), },
		      { "Stunde 21", xmlsax.getAttributWert().get(80 + zaehler * 96), xmlsax.getAttributWert().get(81 + zaehler * 96), xmlsax.getAttributWert().get(82 + zaehler * 96), xmlsax.getAttributWert().get(83 + zaehler * 96), },
		      { "Stunde 22", xmlsax.getAttributWert().get(84 + zaehler * 96), xmlsax.getAttributWert().get(85 + zaehler * 96), xmlsax.getAttributWert().get(86 + zaehler * 96), xmlsax.getAttributWert().get(87 + zaehler * 96), },
		      { "Stunde 23", xmlsax.getAttributWert().get(88 + zaehler * 96), xmlsax.getAttributWert().get(89 + zaehler * 96), xmlsax.getAttributWert().get(90 + zaehler * 96), xmlsax.getAttributWert().get(91 + zaehler * 96), },
		      { "Stunde 24", xmlsax.getAttributWert().get(92 + zaehler * 96), xmlsax.getAttributWert().get(93 + zaehler * 96), xmlsax.getAttributWert().get(94 + zaehler * 96), xmlsax.getAttributWert().get(95 + zaehler * 96), }
		      //{ "Stunde 25", xmlsax.getAttributWert().get(96), xmlsax.getAttributWert().get(97), xmlsax.getAttributWert().get(98), xmlsax.getAttributWert().get(99), }
		    };	
	}

	
	//Position uebergeben
	public int[] getPosition() {
		return position; 	
	}		
	
	//Werte uebergeben
	public String[] getWerte() {
		return werte; 	
	}
	
	//Zähler für Position uebergeben
	public int getPositionsZaehler() {
		return zaehlerpos; 	
	}	
	
	
	//**********************//
	// Tabelle vorbereiten //
	//********************//

	//Für Datenveränderung
	private boolean DEBUG = true;
			
		
		//*******************************//
		// Vorbereitung / Muss Methoden //
		//*****************************//
	 
		//Die Anzahl Reihen
		public int getRowCount() {
			return daten.length;
		}

		public void fireTableDataChanged(ArrayList<String> attributWertvxml) {
			// TODO Auto-generated method stub
			
		}

		//Die Anzahl Kolonnen
		public int getColumnCount() {
			return datenueberschrift.length;
		}

        public String getColumnName(int col) {
            return datenueberschrift[col];
        }
		
		public Object getValueAt(int row, int col) {
			return daten[row][col];
		}
		
		//*****************************//
		// Weitere Tabellenfunktionen //
		//***************************//

		
	    // Jede Zelle ist editierbar 
		public boolean isCellEditable(int row, int col) { 
		   return true; 
		} 

		// Wird aufgerufen, falls der Wert einer Zelle verändert wurde 
		public void setValueAt(Object value, int row, int col) { 
		     daten[row][col] = value.toString();
		     
		     //Positionsbestimmung
		     int positionkolonne = col * 4;
		     int totalposition = positionkolonne + row;
		     position [0 + zaehlerpos]= totalposition;
		     totalposition = 0;
		     //Wertbestimmung
		     werte [0 + zaehlerpos] = value.toString();
		     ++zaehlerpos;
		}	
		
		
        private void printDebugData() {
            int numRows = getRowCount();
            int numCols = getColumnCount();

            for (int i=0; i < numRows; i++) {
                System.out.print("    row " + i + ":");
                for (int j=0; j < numCols; j++) {
                    System.out.print("  " + daten[i][j]);
                }
                System.out.println();
            }
            System.out.println("--------------------------");
        }	        
        
        //public void clearTable() {
        	//ArrayList daten = new ArrayList();
            //super.fireTableDataChanged();
        //}
        		        
}

Sieht da jemand ein Fehler? Ich komme einfach nicht mehr weiter. Bitte helft mir.

Freundliche Grüsse

JavaLight
 
S

SlaterB

Gast
Java Light hat gesagt.:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at org.jdom.input.SAXBuilder.fileToURL(SAXBuilder.java:925)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:788)
at FahrplanXML.Saxwe.<init>(Saxwe.java:52)
at FahrplanXML.ModellTabelle.<init>(ModellTabelle.java:30)
at FahrplanXML.Detailoberflaeche.grundoberflaechen(Detailoberflaeche.java:387)
...

in der Fehlermeldung steht, dass der Fehler im Konstruktor Saxwe steht, diesen Konstruktor hast du aber nicht gepostet..

anscheinend wird dort eine Datei nicht gefunden (fileToURL), also bitte mal vorher ein
System.out.println("benutze Dateiname: "+filename);
oder ähnliches einfügen, um zu sehen was da passiert,

-------

eigentlich ist es ja offensichtlich, der Aufruf ist
Code:
  //FileAuswahl fileauswaehlen = new FileAuswahl(); 
   //File filename = fileauswaehlen.getNames(); 
   xmlsax = new Saxwe(null);

also Datei null, damit scheint der Konstruktor nicht kar zu kommen,
oder wie soll er in dieser Situation reagieren?
 

Java Light

Aktives Mitglied
Danke für Eure Posts.

An der Klasse Saxwe liegt es nicht, denn da habe ich nichts verändert und vorher lief es ja. Nun, habe ich den Code wie folgt angepasst:

Klasse ModellTabelle
Code:
	FileAuswahl fileauswaehlen = new FileAuswahl();
	File filename = fileauswaehlen.getNames();
	System.out.println("benutze Dateiname: "+filename);
	xmlsax = new Saxwe(filename);

Die Ausgabe ist dann: benutzer Dateiname: null Irgendwie kann der den Dateinamen nicht mehr holen, obwohl ich in der Klasse Detailoberfläche genau desselbe mache, aber wieso gehts hier nicht?

Danke für Eure weiteren Posts.

Euer Java Light.
 

AlArenal

Top Contributor
Da du die Klasse FileAuswahl nicht gepostet hast, können wir schlecht sagen was darin passiert oder nicht passiert.

Nebenbei:

Abgesehen sträuben sich mir die Nackenhaare, wenn eine Methode #getNames, die offensichtlich anzeigt ein Array oder eine List zurückgeben zu wollen nur ein File Objekt liefert und dieses dann 'filename' genannt wird.

Analogie zur Verdeutlichung:
Das wäre, als würde #getAutomarken mir keine Automarken liefern, sondern ein ganzes Auto. Und das Auto nenne ich dann 'autoname'. Pfui! In die Ecke und schäm dich! ;)
 

Java Light

Aktives Mitglied
Sorry, ich bin erst Anfänger. Wieso meinst Du sollte die Methode #getNames ein Array anzeigen? Das verstehe ich nicht? Kannst Du mir das ein wenig genauer erklären? Besten Dank

Hier noch die Klasse FileAuswahl:

Code:
package FahrplanXML;

import java.io.File;
import java.io.IOException;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;

import org.jdom.JDOMException;

public class FileAuswahl {
	




	private File fileitalien;


	//Ausgewählter Dateiname an Detailoberflaeche und ModellTabelle übergeben
	public File getNames() {
		
		System.out.println(fileitalien);
		return this.fileitalien;
	}
	
	



	public void FileAuswaehlen() throws JDOMException, IOException {
		
	JFileChooser datei = new JFileChooser();
	datei.setFileFilter(new FileFilter()
			{
				@Override public boolean accept (File f)
				{
					return f.isDirectory() || 
					f.getName().toLowerCase().endsWith(".xml");
				}
				@Override public String getDescription()
				{
					return "XML-Files";
				}
			} );
	
	int state = datei.showOpenDialog(null);
	
	if (state == JFileChooser.APPROVE_OPTION )
	{
		fileitalien = datei.getSelectedFile();
		
	}

	else 
	{
	System.out.println("Auswahl abgebrochen");
	System.exit(0);
	}	

	}
}

Besten Dank für weitere Inputs und Hilfen...
 

AlArenal

Top Contributor
Mach mal
Code:
	FileAuswahl fileauswaehlen = new FileAuswahl();
	fileauswaehlen.FileAuswaehlen(); // <= die hier ist neu
	File filename = fileauswaehlen.getNames();
	System.out.println("benutze Dateiname: "+filename);
	xmlsax = new Saxwe(filename);

Dann könnte es klappen, denn so lange keine Datei ausgeäwählt wurde, liefert #getNames natürlich null. Unklar ist mir, warum die Methode #FileAuswaehlen eine JDOMException werfen soll. Die macht doch gar nix mit XML.

Ansonsten ist das eine gute Möglichkeit dich an ein paar Konventionen zu gewöhnen, die dir das Leben einfacher machen:
- Methodennamen beginnen immer mit einem Kleinbuchstaben
- #getNames suggeriert durch den Plural (names statt name), dass eben auch mehrere Namen zurückgeliefert werden könnten / müssten und das würde man vorzugsweise als List machen (oder seltener als Array)
- #getNames suggeriert weiterhin, dass Namen geliefert werden und keine File-Instanzen. Wenn du nicht gerade eine eigene Klasse Name benutzt, würde man als Rückgabe für einen einzelnen Name einen String erwarten
 

Java Light

Aktives Mitglied
Hallo AlArenal...

Danke für deinen Tipp. Leider ist es bereits so, dass ich die Methode FileAuswahlen

Code:
fileauswaehlen.FileAuswaehlen();

bereits in der Klasse Detailoberflaeche aufrufe. Ich möchte deshalb nicht noch einmal dieselbe Methode aufrufen. Die Frage ist deshalb wie kann ich den Filenamen von der einen in die andere Klasse übermitteln. Danke übrigens für deien Anregungen betreffend Namenskonventionen.

Bitte helft mir....

Euer

JavaLight
 

AlArenal

Top Contributor
Java Light hat gesagt.:
Hallo AlArenal...

Danke für deinen Tipp. Leider ist es bereits so, dass ich die Methode FileAuswahlen

Code:
fileauswaehlen.FileAuswaehlen();

bereits in der Klasse Detailoberflaeche aufrufe.

Das interessiert hier ( http://www.java-forum.org/de/viewtopic.php?p=212385#212385 ) aber mal gar nicht, da es sich um eine andere Instanz handelt und bei dieser machst du den Aufruf nicht und entsprechend ist bei ihr die interne Variable nicht gesetzt, also völlig richtig auch 'null'.
 

Java Light

Aktives Mitglied
Ja, ich verstehe deine Idee. Ich verstehe auch weshalb die Variable 'null' ist.
Nur wenn ich deine Lösung verwende, erscheint bei mir 3 mal das Dateiauswahlfenster. Und ich möchte eigentlich nur einmal eine Datei auswählen und diese dann an die Klasse ModellTabelle weitergeben.
Oder versteh ich irgendwas nicht? *Auf der Leitung steh*?

Besten Dank...
 

AlArenal

Top Contributor
Dann musst du deinen Klassen eben umorganisieren, die Dateiauswahl nur einmal machen und das Ergebnis an die Instanzen übergeben, die die entspr. Parameter benötigen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
C Probleme mit Byte konvertieren nach int Java Basics - Anfänger-Themen 10
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
I Projekte in IDE untereinander sharen / Probleme beim Build Java Basics - Anfänger-Themen 8
MiMa Probleme mit Datentyp long ?? Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
Jxhnny.lpz TicTacToe Spiel vs Computer. (Probleme) Java Basics - Anfänger-Themen 7
B Quiz mit RMI Probleme mit RMI start Java Basics - Anfänger-Themen 4
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
V Probleme Guessing Game Java Basics - Anfänger-Themen 8
hebein PDF Ausdruck auf Drucker - Probleme mit Format Java Basics - Anfänger-Themen 17
R JMenu/JMenuItem Probleme Java Basics - Anfänger-Themen 2
B Static vs non static und Probleme daraus Java Basics - Anfänger-Themen 13
J Probleme mit dem Debugger Java Basics - Anfänger-Themen 4
I Probleme mit OutputStream - Datei lässt sich nicht öffnen Java Basics - Anfänger-Themen 4
J Probleme mit Kompilierung Java Basics - Anfänger-Themen 11
B Probleme mit Zugriff auf Dateisystem Windows 10 ( jFileChooser) Java Basics - Anfänger-Themen 17
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
C Probleme mit paintComponent Java Basics - Anfänger-Themen 13
P Probleme mit JUnit-Tests, es kommt was anderes raus als bei manuellen Tests Java Basics - Anfänger-Themen 5
E JavaFX Editor Probleme mit der Zwischenablage Java Basics - Anfänger-Themen 12
C Probleme mit dem Erstellen und Importieren von Packages Java Basics - Anfänger-Themen 6
3 OOP erste Versuche, OOP zu verstehen. Probleme mit gettern und settern Java Basics - Anfänger-Themen 4
R Erste Schritte Probleme bei 2D Spielfeld, mit einzufügender "Person" Java Basics - Anfänger-Themen 5
P Probleme bei der Installation von JavaFX Java Basics - Anfänger-Themen 3
S Mehrere Probleme im Code Java Basics - Anfänger-Themen 7
D Probleme mit JFrame und der Größe Java Basics - Anfänger-Themen 8
Dimax String Probleme Java Basics - Anfänger-Themen 12
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
Splayfer Java Array Probleme Java Basics - Anfänger-Themen 3
J Probleme bei IllegalArgumentException "werfen". Java Basics - Anfänger-Themen 1
K Probleme bei der Ausgabe - komme nicht weiter :/ Java Basics - Anfänger-Themen 15
X Probleme im Umgang mit PriorityQueue Java Basics - Anfänger-Themen 75
D Probleme mit dem Windowbuilder und JComboBox Java Basics - Anfänger-Themen 2
M Regex Probleme (mal wieder) Java Basics - Anfänger-Themen 3
tom.j85 TicTacToe - probleme beim Casten Java Basics - Anfänger-Themen 6
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
X Probleme mit Übungsaufgaben zu Zahlentypen Java Basics - Anfänger-Themen 4
G Probleme bei Aufgabe Java Basics - Anfänger-Themen 12
P Erste Schritte Probleme mit dem Programmieren Java Basics - Anfänger-Themen 12
B Probleme bei einer Aufgabe Java Basics - Anfänger-Themen 19
Franzi1001 Probleme mit Eclipse Java Basics - Anfänger-Themen 7
T Probleme bei Installation von JDK Java Basics - Anfänger-Themen 2
C Probleme mit String-Vergleich Java Basics - Anfänger-Themen 4
C Probleme bei Regex Java Basics - Anfänger-Themen 9
V Probleme mit Arrays Java Basics - Anfänger-Themen 8
D Kleine Probleme mit Split-Befehlen Java Basics - Anfänger-Themen 5
T Probleme mit Strings Java Basics - Anfänger-Themen 6
G Probleme bei Frame aufgaben Java Basics - Anfänger-Themen 6
N Probleme mit dem ActionListener Java Basics - Anfänger-Themen 4
D Probleme beim Kompelieren mache ich etwas falsch ? Java Basics - Anfänger-Themen 3
L Probleme mit Java Java Basics - Anfänger-Themen 3
S Probleme mit abspielen einer .wav Datei Java Basics - Anfänger-Themen 2
J Probleme bei der Umwandlung einer Farbe von Hex zu RGB Java Basics - Anfänger-Themen 8
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
M Probleme beim aktualisieren eines JPanels Java Basics - Anfänger-Themen 7
J Probleme beim Array ausgeben Java Basics - Anfänger-Themen 4
M Probleme bei rekursiver Zuordnung Java Basics - Anfänger-Themen 1
I Probleme mit 2 dimensionale Arrays Java Basics - Anfänger-Themen 3
H Best Practice View probleme Java Basics - Anfänger-Themen 2
B Probleme mit Kreisberechnung Java Basics - Anfänger-Themen 15
E Probleme mit Scanner Java Basics - Anfänger-Themen 4
J Eclipse Export Probleme Java Basics - Anfänger-Themen 25
M Probleme beim verwenden von Packages Java Basics - Anfänger-Themen 6
D Probleme mit der Übergabe einer BorderPane Java Basics - Anfänger-Themen 2
J Interface Probleme bei der Implementierung Java Basics - Anfänger-Themen 1
BlueFox Tabelle in der Konsole ausgeben - Probleme Java Basics - Anfänger-Themen 1
G Methoden Probleme beim Methodenaufruf Java Basics - Anfänger-Themen 2
V Klassen ObjectInputStream ->ReadObject Probleme Java Basics - Anfänger-Themen 5
P Probleme mit der Do-Schleife Java Basics - Anfänger-Themen 2
F Erste Schritte Compiling Probleme Java Basics - Anfänger-Themen 13
S Neuling und Probleme bei Schulaufgabe Java Basics - Anfänger-Themen 5
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
S Erste Schritte 2D Grafik Probleme mit KeyListener. Java Basics - Anfänger-Themen 18
M Array mit eigenem Datentyp probleme beim übergeben Java Basics - Anfänger-Themen 6
M Probleme mit Eclipse Java Basics - Anfänger-Themen 20
G Probleme beim casten von double zu int Java Basics - Anfänger-Themen 3
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
S Compiler-Fehler javac hat Probleme mit Paketen unter OSX Java Basics - Anfänger-Themen 2
J Probleme beim schreiben von Dateien Java Basics - Anfänger-Themen 5
B Variablen Probleme mit Eclipse Java Basics - Anfänger-Themen 6
H Mouse- und KeyListener Probleme? Java Basics - Anfänger-Themen 5
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
I Probleme bei Verzeichnissanalyse Java Basics - Anfänger-Themen 12
F Probleme mit privaten Klassen (abstrakten Klassen) Java Basics - Anfänger-Themen 1
H Probleme mit Klassen...oder: Eine Uhr Java Basics - Anfänger-Themen 9
G Probleme mit Konsole Java Basics - Anfänger-Themen 4
S Probleme mit GamGrid Spiel-Erstellung => Actor reagiert nicht auf Tastatur Java Basics - Anfänger-Themen 2
G Probleme mit Eclipse oder der URL Klasse Java Basics - Anfänger-Themen 5
W Verständnis Probleme bei der while-Schleife und continue Java Basics - Anfänger-Themen 21
M Probleme mit Anzeigen von String in GUI und if-Anweisung Java Basics - Anfänger-Themen 9
T Konstruktor Probleme Java Basics - Anfänger-Themen 3
W Methoden Probleme mit der Scanner Methode Java Basics - Anfänger-Themen 2
F Ja Nein Abfrage und andere Probleme Java Basics - Anfänger-Themen 5
L If Anweisung mit ArrayList Probleme Java Basics - Anfänger-Themen 6
littles_de Simbad Simulator probleme mit Sensordaten... Java Basics - Anfänger-Themen 0
M Erste Schritte Probleme beim Verknüpfen von Methoden Java Basics - Anfänger-Themen 15
A Probleme beim Methodenaufruf von Object[] ! Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben