Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich übergebe meiner Methode appendscore den nicknamen Array.
Eigentlicht sollte er dann mit .append in die TextArea geschrieben werden, aber es passiert nichts.
Warum?
Java:
public class HS {
JFrame frame = new JFrame("Highscore");
JPanel panel = new JPanel();
JTextArea area = new JTextArea(10,12);
public void fensterErzeugen() {
area.setEditable(false);
panel.add(area);
frame.getContentPane().add(BorderLayout.CENTER, panel);
frame.setSize(200, 450);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
}
public void appendscore(String[] nickname3) {
for (int i = 0; i < nickname3.length; i++) {
area.append(nickname3[i]);
}
}
}
public class Main extends Applet
{
SpielOberflaeche spielOberflaeche;
MenueOberflaeche menueOberflaeche;
Highscore highscore;
public Main()
{
spielOberflaeche = new SpielOberflaeche();
menueOberflaeche = new MenueOberflaeche(spielOberflaeche);
highscore = new Highscore(spielOberflaeche);
setLayout(new BorderLayout(5,5));
resize(550,350);
add("Center", spielOberflaeche);
add("North", menueOberflaeche);
add("West", highscore);
new HS().fensterErzeugen();
}
}
in der Klasse Highscore wird die Methode
Java:
new HS().appendscore(nickname3);
aufgerufen, sobald der Spieler das Spiel geschafft hat.
In der Klasse HS sollte dann der Highscore aktuallisiert werden.
Java:
public class HS {
JFrame frame = new JFrame("Highscore");
JPanel panel = new JPanel();
JTextArea area = new JTextArea(10,12);
public void fensterErzeugen() {
area.setEditable(false);
panel.add(area);
frame.getContentPane().add(BorderLayout.CENTER, panel);
frame.setSize(200, 450);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setVisible(true);
}
public void appendscore(String[] nickname3) {
for (int i = 0; i < nickname3.length; i++) {
area.append(nickname3[i]);
}
}
}
, verwirfst es aber sofort wieder, d.h. du bekommst zwar dein Fenster, kannst aber nach dessen Erzeugung nicht mehr drauf zugreifen, weil du keine Referenz mehr drauf hast
Java:
new HS().fensterErzeugen();
Wenn du jetzt mit
Code:
new HS.appendScore(...)
versuchst, an das alte Fenster ranzukommen, scheitert das natürlich daran, dass du ja ein neues Objekt vom Typ
Code:
HS
anlegst und nicht auf das alte zugreifst.
[EDIT]Und warum v.a. sollte man in der HighScore-Klasse eine neue Instanz von HS anlegen?[/EDIT]
Wat? Das klingt nicht gut. Warum bitte ruft ein Applet sich selbst auf? Das klingt nach einem Konzeptionsfehler...
Überleg nochmal ganz langsam: dein Applet ist ein Spiel. Ist das Spiel zu Ende, soll sich ein Fenster öffnen, in welchem der HighScore zu sehen ist. Da ruft sich nix selbst nochmal auf.
die Methode in meiner Main aufrufe, sollte er den append Befehl nur auf das Object anwenden.
Kann sein, dass die ganze Klasse Main neu ausgeführt wird?
Java:
public class Main extends Applet
{
SpielOberflaeche spielOberflaeche;
MenueOberflaeche menueOberflaeche;
Highscore highscore;
HS hs = new HS();
public Main()
{
spielOberflaeche = new SpielOberflaeche();
menueOberflaeche = new MenueOberflaeche(spielOberflaeche);
highscore = new Highscore(spielOberflaeche);
setLayout(new BorderLayout(5,5));
resize(550,350);
add("Center", spielOberflaeche);
add("North", menueOberflaeche);
add("West", highscore);
hs.fensterErzeugen();
}
}
Warum bitte rufst du IN deiner Main new Main auf? Das ergibts doch keinen Sinn
[EDIT]
Java:
new Main().hs.appendscore(highscore3, nickname3);
Aaah, jetzt hab ich´s kapiert. Ja, hast Recht, der Aufruf sieht zwar überuas hässlich aus, sollte aber funktionieren.
Du brauchst aber normalerweise keine Instanz eines Applets selbst zu erzeugen, das macht der Browser für dich.