Da ich keinen eigen Thread aufmachen wollte und der Titel passt, schreibe ich es hier rein.
Die Frage ist auch recht allgemein, finde ich.
Also, ich habe folgendes Problem, ich möchte die Zauber eines ausgewählten Helden in einem neuen Fenster anzeigen lassen um dann Werte zu manipulieren, genauer gesagt ich will diese spontan Modifizieren.
Ich war auch schon mit Maik in Kontakt, danke dafür, das hat mir schon einmal weiter geholfen.
ich fasse mal alles zusammen, auch für andere Neulinge, die eventuell auf die gleichen Probleme stoßen:
als ersten erstelle ich eine Klasse 'HeldenStart' welche HeldenWertePlugin3 implementiert
Code: Alles auswählen
public class HeldenStart implements HeldenWertePlugin3 {
/* (non-Javadoc)
* @see helden.plugin.HeldenWertePlugin3#doWork(javax.swing.JFrame, helden.plugin.werteplugin2.PluginHeld2[], helden.plugin.werteplugin3.PluginHeldenWerteWerkzeug3)
*/
@Override
public void doWork(JFrame parent, PluginHeld2[] helden, PluginHeldenWerteWerkzeug3 phww){
new SponModController(parent,helden,phww ); // einfach alles an den Controller weiter reichen
}
/**
* Liefert das ImageIcon fuer das Menu
* @return ImageIcon oder null
*/
@Override
public ImageIcon getIcon() {
ProtectionDomain currentProtectionDomain = getClass().getProtectionDomain();
final CodeSource codeSource = currentProtectionDomain.getCodeSource();
URL icon = AccessController.doPrivileged(new PrivilegedAction<URLClassLoader>() {
public URLClassLoader run() {
return new URLClassLoader(new URL[]{codeSource.getLocation()});
}
})
.getResource("sponmod/sponmod.gif");
return new ImageIcon(icon);
}
/**
* Gibt den Namen des Plugins an.
* Wird verwendet um das Menu auf zu bauen.
* @return name
*/
@Override
public String getMenuName() {
return "Spontane Modifikation";
}
/**
* Wird angezeigt, wenn die Maus ueber den Menu schwebt.
* @return tooltip
*/
@Override
public String getToolTipText() {
return "Spontane Modifikation von Zaubern";
}
/**
* Gibt helden den Typ dieses Plugins,
* das KalenderPlugIn zB ist simple
* dieses hier muss vom Typ DATEN3 sein,
* damit wir Zugriff auf phww, frame und helden haben
* (siehe Konstruktor)
* @return DATEN3
*/
@Override
public String getType() {
return DATEN3;
}
@Override
public void doWork(JFrame arg0) {
new SponModController();
}
}
in meinem Controller habe ich dann u.a. folgendes
Code: Alles auswählen
public class SponModController implements ChangeListener, ActionListener, WindowListener {
// globals
private SponModPanel panel;
private PluginHeld2[] helden;
private PluginHeldenWerteWerkzeug3 phww;
/**
* Konstruktor Organisiert den Aufbau der GUI mit Helden
*
* @param parent
* Der Helden-Frame
*/
public SponModController(JFrame parent, PluginHeld2[] helden, PluginHeldenWerteWerkzeug3 phww) {
super();
this.helden = helden;
this.phww = phww;
this.panel = new SponModPanel(this);
JDialog edit = new JDialog(parent, "Spontane Modifikation", true);
edit.getContentPane().add(panel);
edit.setSize(300, 200);
edit.setVisible(true);
refreshValues();
}
/**
* @return the zauber
*/
public String[][] getZauber() {
// habe das für debug zwecke in zwei Zeilen auf geteilt. phww ist bei mir korrekt
PluginHeldenWerteWerkzeug3 temp = this.phww;
return temp.getZauberAlsString();
}
und im panel habe ich dann folgendes
Code: Alles auswählen
private String [][] saZauber;
public JTextField getFieldZauber(){
String sZauber =String.format("Die Zauber von %s \n", controller.getSelectedHeld());
saZauber = controller.getSaZauber();
for (int r=0; r<saZauber.length; r++) {
for (int c=0; c<saZauber[r].length; c++) {
sZauber +=" " + saZauber[r][c];
}
sZauber +="\n";
}
return new JTextField(sZauber);
}
Wie man an der letzten Funktion sieht gebe ich den ausgewählten helden mmit aus, das funktioniert, aber
controller.getSaZauber();
liefert nicht 'null', warum denn das?
Der Held hat definitiv Zauber, irgend etwas was ich übersehen habe?
und eigentlich müsste ich doch mit
String sZauber = saZauber[r][0];
String sRepraes = saZauber[r][1];
an den Zauber bzw an die Repraesantation des Zaubers kommen, richtig?
Und wo wir dabei sind
PluginZauber3 pz3 = phww.getZauber(arg0, arg1); // arg0 und arg1 sind Strings, sind das die Werte aus dem 2dim Array?
es wird ja ein PluginZauber3 Objekt zurück gegeben
PluginZauberInfo pzi = controller.getPhww().getZauberInfo(pz3);
und hier komme ich dann an die Reichweite, Kosten, etc, richtig?
vielen Dank schon mal
Dennis