Java Schachbrett

Ibolend

Newbie
Registriert
Juni 2011
Beiträge
4
HALLO wie geht es euch

Code:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class GUI {

	// frame erstellen name "Schachbrett"
	JFrame frame = new JFrame("Schachbrett");

	// 1 panel fürs schachbrett 4 fürs name|zahl
	// JPanel[] panel1,panel2,panel3,panel4,panel5 = new JPanel[5];

	JPanel panel1 = new JPanel();
	JPanel panel2 = new JPanel();
	JPanel panel3 = new JPanel();
	JPanel panel4 = new JPanel();
	JPanel panel5 = new JPanel();// JPanel panel1,panel2 = new JPanel();

	JButton[][] buttons = new JButton[8][8];
	String[] rand = new String[] { "a", "b", "c", "d", "e", "f", "g", "h" };
	String[] rand2 = new String[] { "1", "2", "3", "4", "5", "6", "7", "8" };
	JLabel[][] label = new JLabel[8][8];
	Dimension d = new Dimension(50, 50);
	GridLayout layout = new GridLayout(8,8);
	int i = 0, j = 0, k = 0, l = 0;

	GUI() {

		iniGUI();
	}

	public void iniGUI() {
		// Frame erstellen

		frame = new JFrame("Schachbrett");
		frame.setSize(500, 500);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLayout(new BorderLayout());
		panel1.setLayout(layout);
		
		panel2.setPreferredSize(d);
		panel3.setPreferredSize(d);
		panel4.setPreferredSize(d);
		panel5.setPreferredSize(d);
		
		// Buttons erstellen
		for (i = 0; i < buttons.length; i++) {
			for (j = 0; j < buttons[i].length; j++) {

				System.out.println("i" + i + "j" + j);
				buttons[i][j] = new JButton("");
				buttons[i][j].setActionCommand("" + i);
				buttons[i][j].setActionCommand("" + j);
				// buttons[i][j].setPreferredSize(d);
				
				if ((j % 2 == 0 || !(i % 2 == 0))
						&& ((i % 2 == 0 || !(j % 2 == 0)))) {
					buttons[i][j].setBackground(Color.white);
				} else {
					buttons[i][j].setBackground(Color.black);
				}
				
				buttons[i][j].addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						if (buttons[new Integer(e.getActionCommand())
								.intValue()][new Integer(e.getActionCommand())
								.intValue()].equals((new Integer(e
								.getActionCommand()).intValue()))) {
							buttons[i][j].setForeground(Color.cyan);
						}
					}
				});
				panel1.add(buttons[i][j], BorderLayout.CENTER);

			}

			frame.add(panel1, BorderLayout.CENTER);
			frame.add(panel2, BorderLayout.WEST);
			frame.add(panel3, BorderLayout.EAST);
			frame.add(panel4, BorderLayout.SOUTH);
			frame.add(panel5, BorderLayout.NORTH);
			frame.setVisible(true);
			panel2.setLayout(new BoxLayout(panel2,BoxLayout.X_AXIS));
			panel3.setLayout(new BorderLayout());
			panel4.setLayout(new BorderLayout());
			panel5.setLayout(new BorderLayout());
		}
	}

	public static void main(String[] args) {
		GUI s1 = new GUI();
	}

}

also mein problem ist es das ich irgendiwe die Zahlen und Buchstaben nicht hinbekommen d.h. dass ich es mehr mals versucht habe und immer noch kein plan habe wie ich es anstellen soll @ Killkrog sry wird nciht wieder vorkommen
 

Anhänge

  • Schachbrett_Nummerierung.png
    Schachbrett_Nummerierung.png
    7,8 KB · Aufrufe: 6.870
Zuletzt bearbeitet:
In meinem ersten Beitrag hätte ich:
- zumindest mal "Hallo" gesagt
- in einem wenigstens halbwegs richtigen Deutsch versucht mich verständlich zu erklären

Oder anders gesagt:
Bis jetzt bist du zumindest mir nicht willkommen oO
 
Mach doch einfach dann GridLayout größer auf 10 x 10 und dann fügst du jeweils am Anfang und am Ende der for-Schleifen ein Label ein wo dann der Buchstabe bzw. die Zahl drinsteht
Bsp: frame.add(new Label(ran));
Musst nur drauf achten dass die Felder in den Ecken eig. zuviel sind ;)
 
so ich hab hin und her rumprobiert und habe das hier zustande bekommen
Code:
import javax.swing.JButton;
import javax.swing.JFrame;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class GUI {

	// frame erstellen name "Schachbrett"
	JFrame frame = new JFrame("Schachbrett");

	// 1 panel fürs schachbrett 4 fürs name|zahl
	// JPanel[] panel1,panel2,panel3,panel4,panel5 = new JPanel[5];

	JPanel panel1 = new JPanel();
	JPanel panel2 = new JPanel();
	JPanel panel3 = new JPanel();
	JPanel panel4 = new JPanel();
	JPanel panel5 = new JPanel();// JPanel panel1,panel2 = new JPanel();

	JButton[][] buttons = new JButton[8][8];
	JLabel[][] label = new JLabel[8][8];
	Dimension d = new Dimension(50, 50);
	GridLayout layout = new GridLayout(8,8);
	int i = 0, j = 0, k = 0, l = 0;

	GUI() {

		iniGUI();
		frame.setResizable(false);
	}

	public void iniGUI() {
		// Frame erstellen

		frame = new JFrame("Schachbrett");
		frame.setSize(500, 500);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLayout(new BorderLayout());
		panel1.setLayout(layout);
		
		panel2.setPreferredSize(d);
		panel3.setPreferredSize(d);
		panel4.setPreferredSize(d);
		panel5.setPreferredSize(d);
		
		// Buttons erstellen
		for (i = 0; i < buttons.length; i++) {
			for (j = 0; j < buttons[i].length; j++) {

				System.out.println("i" + i + "j" + j);
				buttons[i][j] = new JButton("");
				buttons[i][j].setActionCommand("" + i);
				buttons[i][j].setActionCommand("" + j);
				// buttons[i][j].setPreferredSize(d);
				
				if ((j % 2 == 0 || !(i % 2 == 0))
						&& ((i % 2 == 0 || !(j % 2 == 0)))) {
					buttons[i][j].setBackground(Color.white);
				} else {
					buttons[i][j].setBackground(Color.black);
				}
				
				buttons[i][j].addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						if (buttons[new Integer(e.getActionCommand())
								.intValue()][new Integer(e.getActionCommand())
								.intValue()].equals((new Integer(e
								.getActionCommand()).intValue()))) {
							buttons[i][j].setForeground(Color.cyan);
						}
					}
				});
				panel1.add(buttons[i][j], BorderLayout.CENTER);

			}
		}
		frame.add(panel1, BorderLayout.CENTER);
		frame.add(getBetaFrame(panel2), BorderLayout.WEST);
		frame.add(getDeltaFrame(panel3), BorderLayout.EAST);
		frame.add(getGammaFrame(panel4), BorderLayout.SOUTH);
		frame.add(getAlphaFrame(panel5), BorderLayout.NORTH);
		
		frame.setVisible(true);
	}
	
	private JPanel getAlphaFrame(JPanel panel){
		int v =10;
		panel.setLayout(new BorderLayout());
		JLabel l1 = new JLabel("A              B              C              D              E              F              G              H");
		l1.setVerticalAlignment(JLabel.CENTER);
		panel.add(l1,BorderLayout.PAGE_END);
		
		return panel;
		
	}

	private JPanel getBetaFrame(JPanel panel){
		panel.setLayout(new GridLayout(8,1));
		
		for(int i=8;i>0;i--){
			panel.add(new JLabel(String.valueOf( (i) + "  "),JLabel.RIGHT));	
		}
		return panel; 
	}
	
	private JPanel getDeltaFrame(JPanel panel){
		panel.setLayout(new GridLayout(8,1));
		
		for(int i=8;i>0;i--){
			panel.add(new JLabel(String.valueOf( (i) + " "),JLabel.LEFT));	
		}
		return panel; 
	}
	
	private JPanel getGammaFrame(JPanel panel){
		panel.setLayout(new BorderLayout());
		panel.add(new JLabel("A              B              C              D              E              F              G              H"), BorderLayout.NORTH);
		
		return panel;
		
	}
	
	public static void main(String[] args) {
		GUI s1 = new GUI();
	
	}

}

ich schaffe es irgendwie nicht die buchstaben zu genau in die mitte zubringen ausserdem ich konnte die buchstaben mithilfe von \t nich auseinander bringen \t = tabulator ?
 
Ich würde dir raten der Fummelei aus dem Weg zu gehen, indem du einfach eine passende Hintergrundgrafik anfertigst. Meinetwegen auch nur den äußeren Rahmen mit Zahlen und Buchstaben.
 
Zurück
Oben