mle1988 Geschrieben 10. Dezember 2009 Geschrieben 10. Dezember 2009 (bearbeitet) Hallo, habe einen Code von einem Freund bekommen und möchte ihn anpassen. Bei der Ausgabe des Schachbretts sollen die buchstabenzahlenkombinationen in den schachfeldern stehen abwechselnd in Weiß/Schwarz von links nach rechts a1 b1 c1 etc nächstes zeile a2 b2 c2: import java.awt.*; import javax.swing.*; public class schachbretttest extends JApplet { public void init() { setSize(512, 512); schachBrett = new Schachbrett(); getContentPane().add(schachBrett, BorderLayout.CENTER); } private Schachbrett schachBrett; } class Schachbrett extends JPanel{ public Schachbrett(){ setLayout(new BorderLayout()); JPanel brett = new JPanel(new GridLayout(8,8)); JPanel feld = null; boolean sw = false; for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { feld = new JPanel(); sw = !sw; feld.setBackground(sw?WHITE:BLACK); brett.add(feld); } sw = !sw; } add(brett); add(new BrettBeschriftung(VERTICAL), BorderLayout.WEST); add(new BrettBeschriftung(VERTICAL), BorderLayout.EAST); add(new BrettBeschriftung(HORIZONTAL), BorderLayout.SOUTH); add(new BrettBeschriftung(HORIZONTAL), BorderLayout.NORTH); } private final Color WHITE = new Color(255,255,255); private final Color BLACK = new Color(0,0,0); private final boolean HORIZONTAL = true; private final boolean VERTICAL = false; class BrettBeschriftung extends JPanel{ private String[] letters = {"a", "b", "c", "d", "e", "f", "g", "h"}; public BrettBeschriftung(boolean horizontal){ setPreferredSize(new Dimension(20,20)); JLabel schrift = null; if(horizontal){ setLayout(new BorderLayout()); JPanel horizontalPanel = new JPanel(); horizontalPanel.setLayout(new GridLayout(1, 8)); for (int i = 0; i < 8; i++) { schrift = new JLabel(letters[i]); schrift.setHorizontalAlignment(JLabel.CENTER); horizontalPanel.add(schrift); } add(horizontalPanel); JPanel fillWest = new JPanel(); JPanel fillEast = new JPanel(); fillWest.setPreferredSize(new Dimension(20,20)); fillEast.setPreferredSize(new Dimension(20,20)); add(fillWest, BorderLayout.WEST); add(fillEast, BorderLayout.EAST); }else{ setLayout(new GridLayout(8, 1)); for (int i = 8; i > 0; i--) { schrift = new JLabel(""+i); schrift.setHorizontalAlignment(JLabel.CENTER); add(schrift); } } } } } vielen dank für eure hilfe Bearbeitet 10. Dezember 2009 von mle1988 Zitieren
mle1988 Geschrieben 10. Dezember 2009 Autor Geschrieben 10. Dezember 2009 (bearbeitet) Woran haperts jetzt? an der ausgabe, das die zahlen und nummern links bzw oben neben den feldern stehen anstatt in den feldern (von links nach rechts a1 b1 c1 ... h1 etc. nächste zeile a2 b2 c2 ... h2) Bearbeitet 10. Dezember 2009 von mle1988 Zitieren
bequiet Geschrieben 11. Dezember 2009 Geschrieben 11. Dezember 2009 So spontan würd ichs mitner if kette versuchen in ner methode. public static void printText (int bla){ if ( bla == 0 ) print " A"; else if ( bla == 1 ) print " B"; else if ( bla == 2 ) print " C"; usw. } Damit gehst eben das ganze Array durch. Zitieren
mle1988 Geschrieben 11. Dezember 2009 Autor Geschrieben 11. Dezember 2009 So spontan würd ichs mitner if kette versuchen in ner methode. public static void printText (int bla){ if ( bla == 0 ) print " A"; else if ( bla == 1 ) print " B"; else if ( bla == 2 ) print " C"; usw. } Damit gehst eben das ganze Array durch. vielen dank. Könntest du das bitte oben in den code einfügen? Zitieren
kingofbrain Geschrieben 11. Dezember 2009 Geschrieben 11. Dezember 2009 Das ist kein Quelltext, den man einfach irgendwo einfügt und dann gehts. Das ist kein Hausaufgabenforum und wir erwarten ein wenig Eigeninitiative von Dir. Welches konkrete Problem hast Du mit o.g. Quelltext und was hast Du selbst schon zur Lösung unternommen? Wenn Du auf der Suche nach einem Dienstleister bist, dann schreib mir eine PM und ich teile Dir meinen Tagessatz mit und setz das auf Stundenbasis um. Peter Zitieren
konsti4u Geschrieben 11. Dezember 2009 Geschrieben 11. Dezember 2009 Um den a1,b1,... in die oberste Zeile zu schreiben und dann in die nächste a2,b2,usw machst du das am besten mit einem counter, hier ein Bsp: Wenn du unten a1,b1... und dann drüber a2,b2 usw haben willst, musst du nur die schleife von unten nach oben durchgehen... int counter=1; for (int i = 7; i <= 0; i--) { schrift = new JLabel(letters+""+counter); schrift.setHorizontalAlignment(JLabel.CENTER); horizontalPanel.add(schrift); counter++; } counter = 0; Code nicht getestet, aber denke sollte gehen Zitieren
mle1988 Geschrieben 11. Dezember 2009 Autor Geschrieben 11. Dezember 2009 Um den a1,b1,... in die oberste Zeile zu schreiben und dann in die nächste a2,b2,usw machst du das am besten mit einem counter, hier ein Bsp: Wenn du unten a1,b1... und dann drüber a2,b2 usw haben willst, musst du nur die schleife von unten nach oben durchgehen... int counter=1; for (int i = 7; i <= 0; i--) { schrift = new JLabel(letters+""+counter); schrift.setHorizontalAlignment(JLabel.CENTER); horizontalPanel.add(schrift); counter++; } counter = 0; Code nicht getestet, aber denke sollte gehen wunderbar klappt! vielen dank Zitieren
konsti4u Geschrieben 11. Dezember 2009 Geschrieben 11. Dezember 2009 Mensch die Edit-Beschränkung ist echt blöd in dem Forum :-D Habs falsch verstanden + nen Fehler drin gehabt, so müssts aber gehen x) int counter=1; ... ... for (int i = 7; i <= 0; i--) { schrift = new JLabel(letters+""+counter); schrift.setHorizontalAlignment(JLabel.CENTER); horizontalPanel.add(schrift); } counter++; if (counter == 8) counter = 1; //Hö? es klappt? aber der andere macht doch was anderes eig :-D Zitieren
kingofbrain Geschrieben 11. Dezember 2009 Geschrieben 11. Dezember 2009 Das dürfte auch aus einem anderen Grund noch nicht funktionieren: for (int i = 7; i <= 0; i--) { Ich glaube, hier hast Du aus Versehen ein "<=" statt dem ">=" verwendet. Du willst ja von oben runter zählen und deshalb ist die Bedingung "solange i größer gleich 0 ist". Peter Zitieren
konsti4u Geschrieben 11. Dezember 2009 Geschrieben 11. Dezember 2009 Da haste natürlich Recht Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.