Ich mal wieder...
Ich habe folgendes Problem:
Ich habe in meinem Programm diverse JFrames um Einstellungen für das Programm vorzunehmen. Nun wollte ich die Werte der Einstellungen in einer separaten Klasse ablegen. Um sie quasi global verfügbar zu machen. Aber wenn ich dann das JFrame erneute aufrufe (ist ein Singelton) wird es wieder mit den alten Einstellungen instanziert, obwohl ich die Werte aus der "Daten-Klasse" referenziere. Untenstehend habe ich mal einen Quellcode-Ausschnitt. Vielleicht seht Ihr einen Fehler?
Ich habe das Gefühl, daß die Startwerte in der Datenklasse nicht überschrieben werden, obwohl ich das wissentlich tue...
[/code]
Ich habe folgendes Problem:
Ich habe in meinem Programm diverse JFrames um Einstellungen für das Programm vorzunehmen. Nun wollte ich die Werte der Einstellungen in einer separaten Klasse ablegen. Um sie quasi global verfügbar zu machen. Aber wenn ich dann das JFrame erneute aufrufe (ist ein Singelton) wird es wieder mit den alten Einstellungen instanziert, obwohl ich die Werte aus der "Daten-Klasse" referenziere. Untenstehend habe ich mal einen Quellcode-Ausschnitt. Vielleicht seht Ihr einen Fehler?
Ich habe das Gefühl, daß die Startwerte in der Datenklasse nicht überschrieben werden, obwohl ich das wissentlich tue...
Code:
########### Hier die Daten-Klasse ##############
package xyz;
import java.io.*;
public class HTML_Seiten_Data {
//Variablen auf Startwert setzen
private static String mSchriftfarbe_alarmfrei = new String(); //Schriftfarbe alarmfrei
private static String mHintergrundfarbe_alarmfrei = new String(); //Hintergrundfarbe alarmfrei
mSchriftfarbe_alarmfrei = "#006400"; //Schriftfarbe alarmfrei
mHintergrundfarbe_alarmfrei = "#7CFC00"; //Hintergrundfarbe alarmfrei
//get- und setFunktionen
public static String getSchriftfarbe_alarmfrei(){
return mSchriftfarbe_alarmfrei;
}
public static String getSchriftfarbe_wieder_alarmfrei(){
return mSchriftfarbe_wieder_alarmfrei;
}
public static void setSchriftfarbe_alarmfrei(String Schriftfarbe_alarmfrei){
mSchriftfarbe_alarmfrei = Schriftfarbe_alarmfrei;
// System.out.println("Schriftfarbe_alarmfrei: " + alarmfrei_S); //Debugging
}
public static void setSchriftfarbe_wieder_alarmfrei(String Schriftfarbe_wieder_alarmfrei){
mSchriftfarbe_wieder_alarmfrei = Schriftfarbe_wieder_alarmfrei;
// System.out.println("Schriftfarbe_wieder_alarmfrei: " + wieder_alarmfrei_S); //Debugging
}
}
########### Ende Daten-Klasse ##############
########### Hier die JFrame-Klasse ##############
package xyz;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.event.ChangeListener;
import javax.swing.JColorChooser;
public class HTML_Seiten extends JFrame {
// Elemente und Variablen definieren
private javax.swing.JButton cmd_Speichern;
private javax.swing.JButton cmd_Abbrechen;
private static javax.swing.JLabel lbl_alarmfrei;
private static HTML_Seiten instance = new HTML_Seiten(); //Frame HTML_Seiten instanzieren
public static HTML_Seiten getHTML_Seiten(){
instance.initComponents();
instance.setComponentsStartValue();
instance.setVisible(true);
return instance;
}
private void initComponents() {
// Elemente und Variablen initialisieren
cmd_Speichern = new javax.swing.JButton();
cmd_Abbrechen = new javax.swing.JButton();
lbl_alarmfrei = new javax.swing.JLabel();
// Elemente formatieren und positionieren
cmd_Speichern.setText("Speichern");
cmd_Speichern.setBounds(170, 280 , 120, 20);
cmd_Speichern.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cmd_Speichern_ActionPerformed(evt);
}
});
cmd_Abbrechen.setText("Abbrechen");
cmd_Abbrechen.setBounds(300, 280 , 120, 20);
cmd_Abbrechen.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cmd_Abbrechen_ActionPerformed(evt);
}
});
// Label
lbl_alarmfrei.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
lbl_alarmfrei.setText("alarmfrei");
lbl_alarmfrei.setBounds(230, 30 , 110, 20);
lbl_alarmfrei.setOpaque(true); // nicht durchsichtig
}
private static void setComponentsStartValue(){
// Felder mit Benutzervorgaben füllen
lbl_alarmfrei.setForeground(Color.decode(HTML_Seiten_Data.getSchriftfarbe_alarmfrei()));
lbl_alarmfrei.setBackground(Color.decode(HTML_Seiten_Data.getHintergrundfarbe_alarmfrei()));
}
private void saveData(){
// Daten in Klasse und Datei speichern
String af_S, af_H;
String ColorToHex;
Color color;
// RGB-Farbwerte in Hex-String wandeln
ColorToHex = Integer.toHexString(lbl_alarmfrei.getForeground().getRGB());
af_S = "#" + ColorToHex.substring(2, ColorToHex.length());
ColorToHex = Integer.toHexString(lbl_alarmfrei.getBackground().getRGB());
af_H = "#" + ColorToHex.substring(2, ColorToHex.length());
// Daten speichern
HTML_Seiten_Data.setSchriftfarbe_alarmfrei(af_S);
HTML_Seiten_Data.setHintergrundfarbe_alarmfrei(af_H);
}
private void cmd_Abbrechen_ActionPerformed(java.awt.event.ActionEvent evt) {
setComponentsStartValue();
instance.dispose();
}
private void cmd_Speichern_ActionPerformed(java.awt.event.ActionEvent evt) {
setComponentsStartValue();
instance.saveData();
instance.dispose();
}
}
########### Ende JFrame-Klasse ##############