Hallo liebe Java-Gemeinde,
für ein Projekt muss ich einige Swing-Komponenten so erweitern, dass eine zweite Hintergrund- bzw. Vordergrundfarbe zur Verfügung steht.
Die Klassenstruktur sieht folgendermaßen aus:
TLabel erbt von JLabel,
TPanel erbt von JPanel,
TClock erbt von JComponent
...
Die Komponenten (TLabel, TPanel, TClock, ...) implementieren die Schnittstelle "IInversible". Die Funktionalität sieht wie folgt aus:
Das funktioniert soweit auch recht gut, allerdings muss ich die Logik immer wieder neu kopieren... An dieser Stelle wäre Mehrfachvererbung wohl ganz praktisch. Wie löse ich das Problem? Vielleicht muss bzw. kann ich die Logik auch anderswo in Swing platzieren? Ideen?
Grüße detrix
für ein Projekt muss ich einige Swing-Komponenten so erweitern, dass eine zweite Hintergrund- bzw. Vordergrundfarbe zur Verfügung steht.
Die Klassenstruktur sieht folgendermaßen aus:
TLabel erbt von JLabel,
TPanel erbt von JPanel,
TClock erbt von JComponent
...
Die Komponenten (TLabel, TPanel, TClock, ...) implementieren die Schnittstelle "IInversible". Die Funktionalität sieht wie folgt aus:
Java:
...
public void setSuperBackground(Color bg) {
super.setBackground(bg);
}
public void setSuperForeground(Color fg) {
super.setForeground(fg);
}
@Override
public void setBackground(Color bg) {
defaultBackground = bg; // Zwischenspeichern der Hintergrundfarbe
setSuperBackground(bg);
}
@Override
public void setForeground(Color fg) {
defaultForeground = fg; // Zwischenspeichern der Vordergrundfarbe
setSuperForeground(fg);
}
public boolean isInverse() {
return inverse;
}
public void setInverse(boolean inverse) {
if (inversible) {
if (inverse) {
setSuperBackground(getInverseBackground());
setSuperForeground(getInverseForeground());
} else {
setSuperBackground(defaultBackground);
setSuperForeground(defaultForeground);
}
}
this.inverse = inverse;
}
public Color getInverseBackground() {
return inverseBackground;
}
public void setInverseBackground(Color inverseBackground) {
this.inverseBackground = inverseBackground;
}
public Color getInverseForeground() {
return inverseForeground;
}
public void setInverseForeground(Color inverseForeground) {
this.inverseForeground = inverseForeground;
}
public boolean isInversible() {
return inversible;
}
public void setInversible(boolean inversible) {
this.inversible = inversible;
}
...
Das funktioniert soweit auch recht gut, allerdings muss ich die Logik immer wieder neu kopieren... An dieser Stelle wäre Mehrfachvererbung wohl ganz praktisch. Wie löse ich das Problem? Vielleicht muss bzw. kann ich die Logik auch anderswo in Swing platzieren? Ideen?
Grüße detrix
Zuletzt bearbeitet: