Hallo,
ich habe mir ein klein wenig Java selbst beigebracht, ein noch kleineres bisschen in bisher drei Jahren Java-Unterricht in der Schule gelernt. Die Grundgedanken von OOP glaube ich auch zu verstehen, nur ob ich sie bereits praktisch umsetze, kann ich nicht wirklich einschätzen. Auch wenn ich (solange ich nur Taschenrechner oder textbasierte Rollenspiele schreibe) meist irgendwie an mein Ziel komme, habe ich sehr oft das Gefühl, dass ich völlig umständliches Zeug zusammenschreibe.
Zum Beispiel folgendes:
Diese Funktion wird in meinem kleinen simplen Swing-Rollenspiel bei praktisch jedem Klick auf Buttons ausgeführt, sprich ich habe manuell in jedes Button-Event update_ALL(); reingeschrieben.
Dass ich auch nur die Swing-Elemente updaten könnte, die bei dem Klick auf entsprechende Buttons tatsächlich verändert werden, ist mir zwar klar, nur müsste ich dann halt obige Funktion in viiele kleine aufsplitten, was nur noch mehr Arbeit wäre.
Ist es möglich, quasi sowas wie einen Hintergrundprozess laufen zu lassen, der einfach folgendes macht:
if [element].hat-sich-verändert {
[element].update; }
Und zwar automatisch für alle Elemente, ohne für jedes einzelne Textfeld so eine Funktion schreiben zu müssen? Und natürlich auch noch für einen Anfänger umsetzbar?
Gruß, Forks
ich habe mir ein klein wenig Java selbst beigebracht, ein noch kleineres bisschen in bisher drei Jahren Java-Unterricht in der Schule gelernt. Die Grundgedanken von OOP glaube ich auch zu verstehen, nur ob ich sie bereits praktisch umsetze, kann ich nicht wirklich einschätzen. Auch wenn ich (solange ich nur Taschenrechner oder textbasierte Rollenspiele schreibe) meist irgendwie an mein Ziel komme, habe ich sehr oft das Gefühl, dass ich völlig umständliches Zeug zusammenschreibe.
Zum Beispiel folgendes:
public void update_All() {
rechnungen.setLevelCap();
jProgressBar1.setMaximum(Held.hp);
jProgressBar1.setValue(Held.khp);
jProgressBar1.setString(Integer.toString(Held.khp));
jProgressBar2.setMaximum(Gegner.hp);
jProgressBar2.setValue(Gegner.khp);
jProgressBar2.setString(Integer.toString(Gegner.khp));
jLabel4.setText(Double.toString(Held.skillpunkte));
jLabel8.setText(Double.toString(Held.skillpunkte));
jLabel14.setText(Integer.toString(Held.st));
jLabel16.setText(Integer.toString(Held.exp));
jLabel17.setText("/ " + Integer.toString(rechnungen.lvlcap));
jLabel19.setText(Double.toString(Held.gold));
jLabel21.setText(Integer.toString(Held.stufe));
jLabel40.setText(Integer.toString(Held.dex));
jLabel41.setText(Integer.toString(Held.zp));
jLabel43.setText(Integer.toString(Held.st));
jLabel45.setText(Integer.toString(Held.dex));
jLabel47.setText(Integer.toString(Held.zp));
jLabel61.setText(Integer.toString(Held.st));
jLabel63.setText(Integer.toString(Held.dex));
jLabel65.setText(Integer.toString(held.getHeldAW()));
jLabel67.setText(Integer.toString(held.getHeldRW()));
jLabel51.setText(Integer.toString(Gegner.stufe));
jLabel53.setText(Integer.toString(Gegner.st));
jLabel55.setText(Integer.toString(Gegner.dex));
jLabel58.setText(Integer.toString(gegner.getGegnerAW()));
jLabel59.setText(Integer.toString(gegner.getGegnerRW()));
if (Held.skillpunkte <= 0) {
jComboBox4.setEnabled(false);
jComboBox5.setEnabled(false);
jComboBox6.setEnabled(false);
} else {
jComboBox4.setEnabled(true);
jComboBox5.setEnabled(true);
jComboBox6.setEnabled(true);
}
}
rechnungen.setLevelCap();
jProgressBar1.setMaximum(Held.hp);
jProgressBar1.setValue(Held.khp);
jProgressBar1.setString(Integer.toString(Held.khp));
jProgressBar2.setMaximum(Gegner.hp);
jProgressBar2.setValue(Gegner.khp);
jProgressBar2.setString(Integer.toString(Gegner.khp));
jLabel4.setText(Double.toString(Held.skillpunkte));
jLabel8.setText(Double.toString(Held.skillpunkte));
jLabel14.setText(Integer.toString(Held.st));
jLabel16.setText(Integer.toString(Held.exp));
jLabel17.setText("/ " + Integer.toString(rechnungen.lvlcap));
jLabel19.setText(Double.toString(Held.gold));
jLabel21.setText(Integer.toString(Held.stufe));
jLabel40.setText(Integer.toString(Held.dex));
jLabel41.setText(Integer.toString(Held.zp));
jLabel43.setText(Integer.toString(Held.st));
jLabel45.setText(Integer.toString(Held.dex));
jLabel47.setText(Integer.toString(Held.zp));
jLabel61.setText(Integer.toString(Held.st));
jLabel63.setText(Integer.toString(Held.dex));
jLabel65.setText(Integer.toString(held.getHeldAW()));
jLabel67.setText(Integer.toString(held.getHeldRW()));
jLabel51.setText(Integer.toString(Gegner.stufe));
jLabel53.setText(Integer.toString(Gegner.st));
jLabel55.setText(Integer.toString(Gegner.dex));
jLabel58.setText(Integer.toString(gegner.getGegnerAW()));
jLabel59.setText(Integer.toString(gegner.getGegnerRW()));
if (Held.skillpunkte <= 0) {
jComboBox4.setEnabled(false);
jComboBox5.setEnabled(false);
jComboBox6.setEnabled(false);
} else {
jComboBox4.setEnabled(true);
jComboBox5.setEnabled(true);
jComboBox6.setEnabled(true);
}
}
Diese Funktion wird in meinem kleinen simplen Swing-Rollenspiel bei praktisch jedem Klick auf Buttons ausgeführt, sprich ich habe manuell in jedes Button-Event update_ALL(); reingeschrieben.
Dass ich auch nur die Swing-Elemente updaten könnte, die bei dem Klick auf entsprechende Buttons tatsächlich verändert werden, ist mir zwar klar, nur müsste ich dann halt obige Funktion in viiele kleine aufsplitten, was nur noch mehr Arbeit wäre.
Ist es möglich, quasi sowas wie einen Hintergrundprozess laufen zu lassen, der einfach folgendes macht:
if [element].hat-sich-verändert {
[element].update; }
Und zwar automatisch für alle Elemente, ohne für jedes einzelne Textfeld so eine Funktion schreiben zu müssen? Und natürlich auch noch für einen Anfänger umsetzbar?
Gruß, Forks