Fragen über Fragen - Bei Änderung XML-Datei -> Anpassung GUI

Hallo

Zunächst einmal ich bin noch ein Anfänger und habe noch nicht so viel Ahnung.

Ich bin zurzeit Prakitkant und meine aufsichts Person ist heute auf einer Fortbildung, deswegen frage ich euch :)

Ich soll eine Präsentation machen mit java. Die Daten dieser Präsentation soll ich aus einem XML-File auslesen, und wenn diese Verändert wurde soll sich die Präsentation auch aktuallisieren.

Ich habe nun mehrere Probleme.

1. Ich möchte in meinem thread der in den Swing eingreift einen if befehl machen der Vergleicht ob die XML-File und das was auf der Präsentation ist noch gleich ist. Wenn ja dann soll nichts passieren wenn nicht dann soll er die Datei durch den Neuen Inhalt der XML-File ersetzen.

2. Da die aktualiesirung mit dem if Befehl dauerhaft gehen soll weiß ich nicht ob ich dazu einen eigenen thread in den Swing thread schreiben soll oder ob ich das mit einer Endlosen while schleife hin bekomme.

3. Wenn ich es mit einer While schleife mein XML-file verändere und dann wieder in die Präsentation will (Sie ist im Vollbildmodus) komme ich nicht wieder in das Fenster

Edit: 4. Wie bekomme ich nur einzelne Texte aus dem XML-file? muss die ancher noch einzelnt verschieben und in moment ist es noch so das er den gesamten text ausliest.


Ich poste jetzt als erstes die stelle um die es Hauptsächlich dreht und danach Meinen Ganzen code

Anmerkung : Ich habe nicht ganz sauber Programmiert. Dh. manche Variablen groß und vieleicht ein wenig schwer nach vollziehbar


Stelle des Problems:
Java:
	public void run() {

							if(frame.getName().equals(parser.getNamen())) {
							}
							
							else {
								System.out.println("es hat sich was verändert");
								frame.setName(frame.getName());
								endLabel.setText(frame.getName());
								frame.validate();
								frame.update(frame.getGraphics());


Klasse für den Vollbildmodus:
Java:
import java.awt.Frame;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;



public class Praesentation {
	
GraphicsDevice myDevice;

	
	public Praesentation() {
		
	}
	
	
	public void vollbild(Frame frame) {

		myDevice = GraphicsEnvironment
                .getLocalGraphicsEnvironment().getDefaultScreenDevice();
		
		
				
		try {
			myDevice.setFullScreenWindow(frame);
		}
		finally {
			myDevice.setFullScreenWindow(null);
		}
		
	}

Klasse für den Frame:
Java:
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.io.File;


import javax.swing.AbstractAction;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.KeyStroke;



public class Frame extends JFrame {



	
	
	private String name;

	
	public Frame() {
		
		
		setSize(Toolkit.getDefaultToolkit().getScreenSize());
		setUndecorated(true);
		
		
		Cursor c = getToolkit().createCustomCursor(
				new ImageIcon("").getImage(), new Point(0, 0), "Cursor");
		setCursor(c);
		exit(); // Methode zum Schließen der Applikation
	}

Klasse zum XML-Parsen
Java:
import java.io.File;

import javax.xml.parsers.*;
import org.w3c.dom.Document;
import org.w3c.dom.Node;



public class Parser  {

	private String namen;

	
			public Parser() throws Exception
		  {  
		    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		    DocumentBuilder builder = factory.newDocumentBuilder();
		    File file = new File("daten.xml");
			Document document = builder.parse( file );
		    Node root = document.getLastChild();	
		    String zwischenspeicher =root.getTextContent();
		    setNamen(zwischenspeicher);
			
			
				  }
		  
		  public void setNamen(String qnamen) {
			  namen = qnamen;
		  }
		  
		  public String getNamen() {
			  return namen;
		  }
		  
}

Klasse zum Überprüfen ob die XML-File verändert wurde:

Java:
public void run() {
			try {
			parser = new Parser();
			} catch (Exception e) {
				System.out.println("Probleme beim erstellen des Parsers");
			}
			
			for ( int i = 0; i>-1 ; i ++ ) {
			 try {
				pparser = new Parser();
			} catch (Exception e) {
			System.out.println("Probleme beim erstellen des zweiten Parsers");
			}
			 String NormaleNamen = parser.getNamen();
			 String NeueNamen = pparser.getNamen();
			 if(parser.getNamen().equals(pparser.getNamen()) ){
				 System.out.println("nichts ist passiert");
				 pparser = null;
				 try {
					 Thread.sleep(5000);
				 } catch (InterruptedException e) {
					 
				 }
				 
			 }
			 else {
				 NormaleNamen = NeueNamen;
				 setBesucherliste(NormaleNamen);
				 parser.setNamen(Besucherliste);
				 pparser = null;
				 try {
					Thread.sleep(10000);
				 } catch (InterruptedException e) {}
			 }
			}
			
	}


	public String getBesucherliste() {
		return Besucherliste;
	}


	public void setBesucherliste(String besucherliste) {
		Besucherliste = besucherliste;
	}
}

Klasse um alles zu Erzeugen:

Java:
import javax.swing.JLabel;
import javax.swing.SwingUtilities;


	public class Controler  {
		
		private static Parser parser;
		private static Frame frame;
		private static Praesentation p;
		private static JLabel endLabel;
		private static  Mythread a;
		
		public static void main(String[] args) throws Exception {
			parser = new Parser();
			frame = new Frame();
			p = new Praesentation();
			endLabel = new JLabel();
			a = new Mythread();
			
			frame.setName(parser.getNamen());
			frame.getContentPane().add(endLabel);
			endLabel.setText(frame.getName());
			frame.validate();
			frame.update(frame.getGraphics());
			p.vollbild(frame);
			
			Thread worker = new Thread() {
				public void run() {
				
					SwingUtilities.invokeLater(new Runnable() {
						
						
						public void run() {

							if(frame.getName().equals(parser.getNamen())) {
							}
							
							else {
								System.out.println("es hat sich was verändert");
								frame.setName(frame.getName());
								endLabel.setText(frame.getName());
								frame.validate();
								frame.update(frame.getGraphics());
							
							
						

						};
					}
					}
					
				);

			}
			
		};
		a.start();
		worker.start();
		
		

		
		}
			
					
}


Die XML-File (steht noch nicht so viel drin):
[XML]
<Besucher>
<Person>
<Vorname>Test</Vorname>
<Nachname>Test2</Nachname>
<itemimage></itemimage>
</Person>
<Person>
<Vorname></Vorname>
<Nachname></Nachname>
<itemimage></itemimage>
</Person>
<Person>
<Vorname></Vorname>
<Nachname></Nachname>
<itemimage></itemimage>
</Person>
<Person>
<Vorname></Vorname>
<Nachname></Nachname>
<itemimage></itemimage>
</Person>
<Person>
<Vorname></Vorname>
<Nachname></Nachname>
<itemimage></itemimage>
</Person>
</Besucher>
[/XML]
 
Zuletzt bearbeitet:
Doppelpost weil ich nicht editen konnte:

Also ich glaube ich habe eins der Probleme glaube ich entdeckt.
Ich bin davon ausgegangen das der Parser, in dem Thread zum verändern des swings, der ist der auch im thread ist der die daten überprüft. Dh ich bräcuhte die variable besucherliste zum vergleichen aus dem Objekt "a" nur wenn ich das mache bekomme ich eine NullPointerException
 
Kann mir wer sagen warum "a" NullPointer ist?

Java:
	public class Controler  {
		
		private static Parser parser;
		private static Frame frame;
		private static Praesentation p;
		private static JLabel endLabel;
		private static  Mythread a;
		
		public static void main(String[] args) throws Exception {
			parser = new Parser();
			frame = new Frame();
			p = new Praesentation();
			endLabel = new JLabel();
			a = new Mythread();
			
			frame.setName(parser.getNamen());
			frame.getContentPane().add(endLabel);
			endLabel.setText(frame.getName());
			frame.validate();
			frame.update(frame.getGraphics());
			p.vollbild(frame);
			
			Thread worker = new Thread() {
				public void run() {
				
					SwingUtilities.invokeLater(new Runnable() {
						
						
						public void run() {
							
							while(true){
							if(frame.getName().matches(a.getBesucherliste())) {
								System.out.println("hallo");
								try {
									Thread.sleep(5000);
								} catch (InterruptedException e) {
								}
							}
							
							else {
								System.out.println("es hat sich was verändert");
								frame.setName(a.getBesucherliste());
								endLabel.setText(frame.getName());
								frame.validate();
								frame.update(frame.getGraphics());
							
							
						
								
						};
					}
					}
					}
				);
					
			}
			
		};
		a.start();
		worker.start();
		}					
}
 
NullPointer weg.

Lösung.

Vorher
Java:
public void run() {
            try {
            parser = new Parser();
            } catch (Exception e) {
                System.out.println("Probleme beim erstellen des Parsers");
            }
            
            for ( int i = 0; i>-1 ; i ++ ) {
             try {

Nacher
Java:
public void run() {
            try {
            parser = new Parser();
            } catch (Exception e) {
                System.out.println("Probleme beim erstellen des Parsers");
            }
            setBesucherliste(parser.getNamen); // Das einfach hinzugefügt
            for ( int i = 0; i>-1 ; i ++ ) {
             try {

Jetzt Bleibt noch das Problem das wenn ich aus dem Vollbild rausgehe nicht wieder rein Switchen kann (Tab+Alt) und das ich noch wissen muss wie ich einzelne sachen aus meiner XML auslesen kann.
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
vielleicht gibt a.getBesucherliste() null zurück?
ohne vollständige Fehlermeldungen und besser noch Log:
Java:
System.out.println("a ist: "+a)
if (a == null) {
  System.out.println("vergiss die Benutzerliste");
} else {
  System.out.println("a-Benutzerliste ist: "+a.getBenutzerListe());
}
schwer zu sagen, und ganz unnötig schwer

edit: ok
 
Ja bin ich auch grade drauf gekommen Trozdem danke :)

Wie gesagt bin neuling

Edit: Warum ist es Unnötig schwer wie würde ich diese Präsentation denn leichter hin bekommen?
 
Zuletzt bearbeitet:
Ich hatte ja das Problem das wenn ich eine while schleife benutze um den Teil des Swing Threads in dem das frame immer aktualisiert wird permanent laufen zulassen ich nachdem ich raus getabbed habe nicht wieder rein konnte. Die lösung des Problems war der Swing Timer (unterscheidet sich zum normalen timer).

Wer es benötigt das ist der import : javax.swing.Timer
und hier habe ich mich drüber schlau gemacht : Galileo Computing :: Java ist auch eine Insel – 19.28 Zeitliches Ausführen mit dem javax.swing.Timer
 
S

SlaterB

Gast
> Warum ist es Unnötig schwer wie würde ich diese Präsentation denn leichter hin bekommen?

erst jetzt gesehen:
ich meinte der Fehler war unnötig versteckt, man kann wie gesagt ganz eindeutig nachschauen, was mit jedem Objekt los ist,

würdest du eine komplexe Zeile wie
> if(frame.getName().matches(a.getBesucherliste())) {
auch aufspalten in
Java:
String b = a.getBesucherliste();
...

if (name.matches(b)) {
und bekämst du die Exception in der letzten Zeile, würdest du gar nicht mehr zu a vermuten, nur noch name + b kommen halbwegs in Frage,
am Exception-StackTrace, der in matches reingeht, sieht man dann auch deutlich, dass es nur der Parameter b sein kann

Spalten auseinanderdividieren, Objekte vorher mit System.out.println anschauen,
Information der Exceptions posten oder selber anschauen

es gibt einige Möglichkeiten alles herauszufinden, darauf zu verzichten macht es unnötig schwer ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
M Fragen beantworten über Textfeldeingabe Allgemeine Java-Themen 5
M ein paar fragen über JBoss und Catalina Allgemeine Java-Themen 7
Zrebna Fragen zu Testabdeckungs-Metriken Allgemeine Java-Themen 4
MarvinsDepression Unbekanntes Zeichen in fremden Code wirft Fragen auf Allgemeine Java-Themen 4
K BlueJ - Fragen zu dem Spiel Pacman (Nachprogrammieren) Allgemeine Java-Themen 141
V Ich hätte 2 Fragen Allgemeine Java-Themen 5
ME2002 Fragen aus einer Java Klausur Allgemeine Java-Themen 67
H Fragen zur Kraken Api Allgemeine Java-Themen 1
nonickatall Klassen Grundsätzliche Fragen zu geplanter Programmstruktur Allgemeine Java-Themen 5
W Ein paar Fragen zu .properties und .css Allgemeine Java-Themen 6
W Mal ein paar generelle Fragen zu InputStream und OutputStream Allgemeine Java-Themen 4
X Fragen zur Javamail API und Gmail Allgemeine Java-Themen 4
T Fragen bezgl. Lambdas Allgemeine Java-Themen 20
X Collections Fragen zu gleichen Elementen in TreeSet Allgemeine Java-Themen 35
A Neuerungen in Java 8 StreamAPI- Paar fragen Allgemeine Java-Themen 4
temi Fragen zur Software-Architektur Allgemeine Java-Themen 123
M Diverse Design-Fragen Allgemeine Java-Themen 6
J 2 Fragen zur Vererbung Allgemeine Java-Themen 5
H Java FX 2 Fragen um Programm in mehrere sprachen zu übersetzen in Gluon Framwork Allgemeine Java-Themen 3
D Grundsätzliche Fragen zum Heap Space Allgemeine Java-Themen 12
J Allgemeine Fragen zu Vererbung Allgemeine Java-Themen 1
M Allgemeine Fragen meinerseits Allgemeine Java-Themen 4
V Wie kann ich die Fragen mit den anderen Klassen verbinden? Allgemeine Java-Themen 1
J Fragen zu generischer doppelt verketteter Liste (bei fehlendem Grundverständnis) Allgemeine Java-Themen 1
R Es gibt keine dummen Fragen (hab ich mal gehört) Allgemeine Java-Themen 11
T Fragen zum Thread-Thema Allgemeine Java-Themen 4
2 2 Klein Fragen Allgemeine Java-Themen 7
alderwaran .jar Code Signing, User-Keystore und Fragen dazu Allgemeine Java-Themen 0
T Fragen zum Thread-Thema Allgemeine Java-Themen 9
A Java Theorie-Fragen Allgemeine Java-Themen 7
K Java QUIZ-Spiel Fragen und Antworten generieren?! Allgemeine Java-Themen 5
R Socket Fragen zu UDP Allgemeine Java-Themen 1
B Noob-Fragen zu Tablets und PC kompatiblität... Allgemeine Java-Themen 6
D Ein paar allgemeine Fragen zu Java Allgemeine Java-Themen 19
L Fragen für Facharbeit: Analyse von Strings in Java Allgemeine Java-Themen 4
R Fragen zu Server + UI Allgemeine Java-Themen 2
U Vier Fragen zu Java Allgemeine Java-Themen 2
H MediaManager Fragen/Probleme Allgemeine Java-Themen 6
D Fragen zum erstellen einer ausführbaren Jar Datei Allgemeine Java-Themen 3
C Polymorphie Fragen zur Annotations von Persistenz Allgemeine Java-Themen 2
StrikeTom Java Performance Fragen Allgemeine Java-Themen 5
Luk10 Fragen zum ByteBuffer (lwjgl - icons) Allgemeine Java-Themen 2
F Akkumulator Hough-Transformation offene Fragen Allgemeine Java-Themen 4
Luk10 Fragen zu Naming-Conventions Allgemeine Java-Themen 5
Z Einige Fragen Allgemeine Java-Themen 10
T OOP Einige Fragen zu UML-Klassendiagrammen Allgemeine Java-Themen 6
G Einige Fragen zu ResourceBundles Allgemeine Java-Themen 2
S Fragen zu verschiedenen Themen vom JCreator Allgemeine Java-Themen 2
DStrohma Grundsätzliche Fragen zum Aufbau eines komplexeren Programmes Allgemeine Java-Themen 8
Semox Grapheneditor - Allgemeine Fragen zum Logikdesign Allgemeine Java-Themen 3
O kleine Fragen eines Anfängers Allgemeine Java-Themen 2
X Executor fragen ob fertig Allgemeine Java-Themen 13
nrg Swing 2 Fragen zu Swing/AWT Allgemeine Java-Themen 7
K Reflections Fragen Allgemeine Java-Themen 7
S Fragen zum SCJD-Zertifikat Allgemeine Java-Themen 2
M Backend Entwicklung - Konzept fragen Allgemeine Java-Themen 3
E Fragen zu Scala Allgemeine Java-Themen 11
Daniel_L Fragen zu RegEx und URL umwandeln Allgemeine Java-Themen 4
J Diverse Fragen bezüglich Jasper Allgemeine Java-Themen 3
S Fragen zum ShutdownHook Allgemeine Java-Themen 7
V Fragen zu einem Java Browser Allgemeine Java-Themen 7
G Fragen zum eigenen Scheduler Allgemeine Java-Themen 4
M Drag and Drop: 3 Fragen Allgemeine Java-Themen 3
L Einige Fragen zu Java Allgemeine Java-Themen 9
F Linguistische Fragen zu Javadoc bzw. Englisch Allgemeine Java-Themen 4
E Einfache Fragen zu Dateien Allgemeine Java-Themen 7
E Thread Fragen in Verbindung mit Swing Allgemeine Java-Themen 4
M MVC Design Pattern - Verständniss Fragen Allgemeine Java-Themen 3
X Einige Fragen zu Serialisierung Allgemeine Java-Themen 2
H Java Multiplicoice Test (10 Fragen) Allgemeine Java-Themen 11
J Viele Fragen. =) Hoffentlich könnt ihr helfen Allgemeine Java-Themen 9
D Grundsätzliche Fragen zur Grafikdarstellung in Spielen Allgemeine Java-Themen 2
J 2 Fragen zu JMF und eine Rechtsfrage Allgemeine Java-Themen 3
S Viele Fragen eines Umsteigers (von .NET) Allgemeine Java-Themen 6
C LinkedList Fragen Allgemeine Java-Themen 7
P Fragen zur JBuilder und den kosten. Allgemeine Java-Themen 7
reibi JVM fragen welche Apps geladen sind Allgemeine Java-Themen 7
I Fragen zum Internetseiten Einlesen/Auswerten Allgemeine Java-Themen 5
F Paket und Software Design Fragen. Allgemeine Java-Themen 5
S 2 Fragen allgemeine fragen zu final und interface Allgemeine Java-Themen 13
D Allgemeine Fragen zum Speichern Allgemeine Java-Themen 3
F allgemeine Fragen zu Java Allgemeine Java-Themen 9
S Fragen zu 4 speziellen Listen Allgemeine Java-Themen 4
U JFrame, JOptionPane - vor dem Schließen Benutzer fragen Allgemeine Java-Themen 10
I zwei simple fragen Allgemeine Java-Themen 22
G 2 Fragen Allgemeine Java-Themen 7
G Fragen zu ausführbaren JAR Files Allgemeine Java-Themen 23
G Fragen zu JTextField bzw. JTextArea Allgemeine Java-Themen 2
J 5 Fragen. Allgemeine Java-Themen 2
P Tausend Fragen... Allgemeine Java-Themen 3
kodela Datenübergabe über Buttons Allgemeine Java-Themen 8
W Jar-File Start nur über Terminal Allgemeine Java-Themen 13
A ByteArray über Socket Allgemeine Java-Themen 3
berserkerdq2 Text über einen Shape anzeigen (Scenebuilder) Allgemeine Java-Themen 1
I 2D-Grafik Vektor-Grafik über die Zwischenablage nach Adobe Illustrator transferieren Allgemeine Java-Themen 8
TheSkyRider Methode über DataInputStream "auslösen" Allgemeine Java-Themen 6
I OpenPDF erzeugt riesige PDFs, wenn Grafiken über PdfGraphics2D#drawImage gezeichnet werden Allgemeine Java-Themen 1
T Etikettendrucker über TCP-IP Allgemeine Java-Themen 1
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21

Ähnliche Java Themen


Oben