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:
Klasse für den Vollbildmodus:
Klasse für den Frame:
Klasse zum XML-Parsen
Klasse zum Überprüfen ob die XML-File verändert wurde:
Klasse um alles zu Erzeugen:
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]
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: