hallo, ich splitte mal das thema weils wieder nur ein ganz kleines ist,
es geht darum , dass ich nun aus einer liste die bereits gefüllt ist, ein paar labels erstelle mit dem inhalt der liste.
und da stelle ich mich wie bei allem anderen mal wieder schusselig an
hier der code
Java:
...ArrayList<Player> alPlayer =newArrayList<Player>(16);...//button overview soll folgendes auslösen (das befüllen der labels mit der listecase"Overview":for(int i =0; i < p; i++){
ovPlayer[i]=newJLabel( alPlayer[i]);}
wie gesagt ich lese mich gerade ein in die listen...und wollte nunmal ausprobieren wie ich aus einer liste in n-labels schreibe
Also was genau willst / musst Du machen? Befüllen DER Labels bedeutet, dass Du bereits die Labels erstellt hast, d.h. Du rufst nur noch auf ovPlayer[i].setText(alPlayer);
Wenn Du aber neue Labels erstellen willst, dann musst Du:
- falls die Label schon gefüllt sind, diese "entsorgen" (Also vom parent entfernen und dann ist wohl ein close aufzurufen)
- jeweils neue Label zu erzeugen
- die erzeugten Label dann zum gewünschten Parent hinzufügen und alle notwendigen Settings setzen (z.B. Anzeigeort).
- Am Ende dann noch ein invalidate() auf dem parent aufrufen, da Du ja die Struktur verändert hast
Also Du merkst: Es macht ggf. Sinn, die Label schon von Anfang an zu haben und dann nur noch den Text neu zu setzen.[/i]
Der JLabel Konstruktor kann kein Player Objekt entgegen nehmen.
Welchen Wert soll das JLabel beinhalten/anzeigen? Diesen Wert musst du von Player Objekt abfragen (zum Beispiel mit einer getName() Methode)
versteh gerade nur bahnhof...also ich dachte mir das folgendermaßen
Code:
case "Overview":
for( int i = 0; i < p; i++ )
{
ovPlayer[i] = new JLabel( alPlayer);//geht so ja nicht..
overviewframe.add(alPlayer) //geht so logischerweise auch nicht
}
ziel ist es, das ich meine liste alPlayer nun auf meiner GUI ausgebe...senkrecht am besten
Was ist ovPlayer? Ein Array von Labels oder etwas komplett anderes?
Ich habe dir ja ein Code Beispiel geliefert wie du den Namen eines Spielers auf ein JLabel bekommst.
Diese Label kannst du dann deinem Fenster hinzufügen.
aber ich frage mich warum immer das letzte label welches generiert wird, nicht in der formatierung unter den anderen angezeigt wird, sondern vollkommen formatlos einfach linksbündig in der mitte
Java:
int y3 =30;for(int i =0; i < p; i++){JLabel ovL =newJLabel( alPlayer.get( i ).name );
ovL.setBounds(60, y3,135,17);
ov.add( ovL );
y3 +=20;}
Das ist auch nicht weiter schlimm, aber wieso die 3?
ovL sagt ja auch nichts aus.
Java und andere Programmiersprachen erlauben eine fülle an Buchstaben und zahlen.
Mit der Autovervollständigungsfunktion muss man später diese auch nicht immer ausschreiben.
In Eclipse reicht es einfach Strg + Leertaste zu drücken.
Beispielsweise hast du eine Variable die heißt : absoluteDefenseValue;
Dann schreibst du einfach "abso" und drückst Strg + Leertaste und die Variable wird vervollständigt.