Veröffentlicht 10. Dezember 200915 j 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 200915 j von mle1988
10. Dezember 200915 j 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 200915 j von mle1988
11. Dezember 200915 j 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.
11. Dezember 200915 j 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?
11. Dezember 200915 j 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
11. Dezember 200915 j 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
11. Dezember 200915 j 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
11. Dezember 200915 j 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
11. Dezember 200915 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.