Hallo Forum,
ich versuche grade ein Log Fenster zu erstellen. Dieses soll sich ständig Aktualisieren. Dafür habe ich ein Thread erstellt was ein Fenster erstellt und die ganze zeit auf Daten wartet.
In der Klasse LogMonitor erstelle ich das Fenster und mit der Methode updateLog wird die Anzeige mit neuen Daten bestückt und Aktualisiert.
In der Klasse LogController ist der Thread unter gebracht und alles um ihn Sichtbar und neue Texte die im Fenster angezeigt werden sollen gesetzt.
Und jetzt mein Problem: Wie kann ich das Laufende Thread aus x Klassen ansprechen um die Texte zu übergeben die im Fenster angezeigt werden sollen ohne das ich in jeder Klassen den LogContoller neu zu definieren und somit für jeder Klasse ein neues Thread mit neuen Fenster auf zu machen um die Texte aus dieser Kasse zu sehen.???:L
Unter Welchen Stichworten oder Links kann ich was nachlesen:rtfm:, oder Lösungsansatz.:bahnhof:
Danke
Gurß
LYJLQ
ich versuche grade ein Log Fenster zu erstellen. Dieses soll sich ständig Aktualisieren. Dafür habe ich ein Thread erstellt was ein Fenster erstellt und die ganze zeit auf Daten wartet.
In der Klasse LogMonitor erstelle ich das Fenster und mit der Methode updateLog wird die Anzeige mit neuen Daten bestückt und Aktualisiert.
Java:
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class LogMonitor extends JFrame
{
private static final long serialVersionUID = -7558310302119076680L;
private JPanel logPanel = new JPanel();
private JTextArea logText = new JTextArea();
public LogMonitor(Boolean logAn) {
super("Log Monitor");
this.setBounds(600, 600, 400, 200);
this.add(mainPanel());
this.setVisible(logAn);
}
private JPanel mainPanel() {
JPanel mainWindowPanel = new JPanel();
mainWindowPanel.setLayout(new BorderLayout());
mainWindowPanel.add(BorderLayout.CENTER,mainLogPanel());
return mainWindowPanel;
}
private JScrollPane mainLogPanel() {
JScrollPane scroll = new JScrollPane(logPanel);
scroll.setCorner( JScrollPane.UPPER_RIGHT_CORNER, new JLabel("1", JLabel.CENTER));
scroll.setCorner( JScrollPane.LOWER_RIGHT_CORNER, new JLabel("2", JLabel.CENTER));
logText.setTabSize(80);
logText.setWrapStyleWord(true);
logText.setText("Start vom Log "+"\n");
logPanel.add(logText);
return scroll;
}
public void updateLog(String log) {
logText.append(log);
logText.append("\n");
logPanel.repaint();
System.out.println("was macht updateLog: "+log);
}
}
In der Klasse LogController ist der Thread unter gebracht und alles um ihn Sichtbar und neue Texte die im Fenster angezeigt werden sollen gesetzt.
Java:
public class LogController implements Runnable
{
private String messageText = "Kassenbuch log Start.";
private Boolean logAn = false;
private Boolean logEnde = false;
private LogMonitor log = new LogMonitor(logAn);
public void setUpdateLog(String newText) {
messageText = newText;
log.updateLog(messageText);
}
public String getUpdateLog() {
return messageText;
}
public void setLogAn(Boolean logAn) {
this.logAn = logAn;
log.setVisible(this.logAn);
}
public Boolean getLogAn() {
return this.logAn;
}
public void run() {
do {
log.updateLog(this.getUpdateLog());
}
while (logEnde);
}
}
Und jetzt mein Problem: Wie kann ich das Laufende Thread aus x Klassen ansprechen um die Texte zu übergeben die im Fenster angezeigt werden sollen ohne das ich in jeder Klassen den LogContoller neu zu definieren und somit für jeder Klasse ein neues Thread mit neuen Fenster auf zu machen um die Texte aus dieser Kasse zu sehen.???:L
Unter Welchen Stichworten oder Links kann ich was nachlesen:rtfm:, oder Lösungsansatz.:bahnhof:
Danke
Gurß
LYJLQ
Zuletzt bearbeitet von einem Moderator: