Hallo,
ich habe eine XML- Datei (unten) und ich lese aus dieser natürlich aus. Mein Problem ist jetzt, dass State 0 der "Haupt-State" ist und dort alle Attribute definiert werden müssen.
In State 1 steht dann nurmehr, was sich ändert.
Ich habe eine Klasse (Klasse 1) wo ich die von der XML-Datei gelesenen Variablen speichere.
Mein Problem ist jetzt, wenn nicht alle Attribute in der XML- Datei angegeben sind, dann werden die Attribute eben mit den default- Werten initialisiert (z.B.: private String type = "Button"; usw.) ich möchte aber, dass sich eben nur das in State 1 ändert, was in der XML- Datei angegeben ist, alles andere soll so wie in State 1 sein.
Hat da wer eine Idee, wie ich das ganz einfach machen kann? (ich hab schon einiges probiert bin aber nie auf eine grünen Zweig gekommen)
Vielen DANK für die Antworten.
lg
Michl
ich habe eine XML- Datei (unten) und ich lese aus dieser natürlich aus. Mein Problem ist jetzt, dass State 0 der "Haupt-State" ist und dort alle Attribute definiert werden müssen.
In State 1 steht dann nurmehr, was sich ändert.
Ich habe eine Klasse (Klasse 1) wo ich die von der XML-Datei gelesenen Variablen speichere.
Mein Problem ist jetzt, wenn nicht alle Attribute in der XML- Datei angegeben sind, dann werden die Attribute eben mit den default- Werten initialisiert (z.B.: private String type = "Button"; usw.) ich möchte aber, dass sich eben nur das in State 1 ändert, was in der XML- Datei angegeben ist, alles andere soll so wie in State 1 sein.
Hat da wer eine Idee, wie ich das ganz einfach machen kann? (ich hab schon einiges probiert bin aber nie auf eine grünen Zweig gekommen)
Vielen DANK für die Antworten.
lg
Michl
Code:
Klasse1:
public class ElementState {
private String type = "Button";
private int elementNr = 0;
private int stateNr = 0;
private String beschriftung = "Ein Button";
private String font = "Monospaced";
private int fontStyle = 0;
private int fontSize = 12;
private int width = 50;
private int height = 30;
private int xPos = 10;
private int yPos = 40;
private String border = "BeveledBorder";
private String enable = "ja";
private int textPos = 0;
private String visible = "true";
private String iconName = "null";
private Color bgColor = Color.WHITE;
private Color textColor = Color.GREEN;
public ElementState() {}
public ElementState(String beschriftung)
{
this.beschriftung = beschriftung;
}
/************** setter- Methoden ********************/
public void setType(String type)
{
this.type = type;
}
public void setElementNr(int elementNr)
{
this.elementNr = elementNr;
}
//... usw.
in Klasse 2:
while (iStates.hasNext()) //States durchlaufen
{
newState = new ElementState();
newState.setType(element.getAttributeValue("type"));
newState.setElementNr(Integer.valueOf(element.getAttributeValue("id")).intValue());
Element states = (Element) iStates.next();
newState.setStateNr(Integer.valueOf(states.getAttributeValue("id")).intValue());
Iterator iPrefs = states.getChildren().iterator();
while (iPrefs.hasNext()) //einzelne Einträge der States durchlaufen
{
Element state = (Element) iPrefs.next();
if (state.getName().equals("beschriftung"))
newState.setBeschriftung(state.getText());
else if (state.getName().equals("font"))
newState.setFont(state.getText());
else if (state.getName().equals("fontstyle"))
newState.setFontStyle(Integer.valueOf(state.getText()).intValue());
else if (state.getName().equals("schriftGroesse") )
newState.setFontSize(Integer.valueOf(state.getText()).intValue());
else if (state.getName().equals("width"))
newState.setWidth(Integer.valueOf(state.getText()).intValue());
else if (state.getName().equals("height"))
newState.setHeight(Integer.valueOf(state.getText()).intValue());
else if (state.getName().equals("xPosition"))
newState.setxPosition(Integer.valueOf(state.getText()).intValue());
else if (state.getName().equals("yPosition"))
newState.setyPosition(Integer.valueOf(state.getText()).intValue());
else if (state.getName().equals("border"))
newState.setBorder(state.getText());
else if (state.getName().equals("enable"))
newState.setEnable(state.getText());
else if (state.getName().equals("textPosition"))
newState.setTextPos(Integer.valueOf(state.getText()).intValue());
else if (state.getName().equals("visible"))
newState.setVisible(state.getText());
else if (state.getName().equals("icon"))
newState.setIcon(state.getText());
else if (state.getName().equals("textFarbe"))
{
newState.setTextColor(
Integer.valueOf(state.getChild("r").getText()).intValue(),
Integer.valueOf(state.getChild("g").getText()).intValue(),
Integer.valueOf(state.getChild("b").getText()).intValue());
}
else if (state.getName().equals("hintergrundfarbe"))
{
newState.setBgColor(
Integer.valueOf(state.getChild("r").getText()).intValue(),
Integer.valueOf(state.getChild("g").getText()).intValue(),
Integer.valueOf(state.getChild("b").getText()).intValue());
}
System.out.println("Das ist getElementNr: " + newState.getStateNr());
}
vStates.add(newState);
}
<Preferences>
<Element type="Button" id="0">
<State id="0">
<beschriftung>Ein</beschriftung>
<font>Arial</font>
<fontstyle>2</fontstyle>
<schriftGroesse>12</schriftGroesse>
<width>90</width>
<height>30</height>
<xPosition>680</xPosition>
<yPosition>100</yPosition>
<border>BeveledBorder</border>
<enable>ja</enable>
<textPosition>-30</textPosition>
<visible>true</visible>
<icon>ein.gif</icon>
<textFarbe><r>255</r><g>255</g>[b]0[/b]</textFarbe>
<hintergrundfarbe><r>0</r><g>255</g>[b]0[/b]</hintergrundfarbe>
</State>
<State id="2">
<hintergrundfarbe>
<r>255</r>
<g>0</g>
[b]0[/b]
</hintergrundfarbe>
</State>
</Element>