Schachspiel Feldgröße festlegen

NordStar

Mitglied
Hier ist der Source Code meiner GUI für ein Schachspiel. Ich habe hier folgende Probleme: 1. Die Buttons, die die Figuren darstellen, sollen eine bestimmte Größe haben, die in Zeile 49 festgelegt wird. Das funktioniert aber scheinbar nicht (auch nicht mit setMaximumSize() ). Das 2. Problem ist, dass das Spielfeld (8 Buttons x 8 Buttons) soll 680x680 groß sein (Zeile 40), damit das Feld mit 8x8 dargestellt wird. Das will aber irgendwie nicht funktionieren, die Darstellung ändert sich immer mit der Größe des Fensters (Zeile 35). Beachtet, das rechts und links vom Spielfeld noch der Friedhof für die Figuren Platz haben muss.

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.Image.*;
import java.awt.Dimension.*;

public class Oberflaeche extends JFrame {
  Steuerung steu;
  JFrame fenster;
  JPanel mitte,boxunten,friedr,friedl;
  JLabel friedw,frieds,pl1,info;
  JButton spielFeld[][] = new JButton[8][8];


  class Listener implements ActionListener{
        public void actionPerformed(ActionEvent e){

      }
    }

  public Oberflaeche(Steuerung st) {
    this.steu = st;
    this.friedw = new JLabel("Friedhof Weiß");
    this.frieds = new JLabel("Friedhof Schwarz");
    this.info = new JLabel("Weiß beginnt");
    this.mitte = new JPanel();
    this.pl1 = new JLabel();
    this.friedr = new JPanel();
    this.friedl = new JPanel();
    this.boxunten = new JPanel();
    this.boxunten.add(info);
    this.fenster = new JFrame("Schachspiel");
    this.fenster.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    this.fenster.setSize(1400,800);
    this.fenster.setLayout(new BorderLayout());
    this.mitte.setLayout(new GridLayout(8,8));
    this.friedr.add(frieds);
    this.friedl.add(friedw);
    this.mitte.setPreferredSize(new Dimension(680,680));
    this.fenster.add(mitte,BorderLayout.CENTER);
    this.fenster.add(pl1,BorderLayout.NORTH);
    this.fenster.add(friedl,BorderLayout.WEST);
    this.fenster.add(friedr,BorderLayout.EAST);
    this.fenster.add(boxunten,BorderLayout.SOUTH);
    for(int i=0;i<8;i++){
        for(int j=0;j<8;j++){
          this.spielFeld[i][j] = new JButton();
          this.spielFeld[i][j].setPreferredSize(new Dimension(85,85));
          this.mitte.add(spielFeld[i][j]);
          this.spielFeld[i][j].addActionListener(new Listener());
        }
      }
    for(int i=0;i<8;i++){
      for(int j=0;j<8;j++){
          this.spielFeld[i][j].setBackground(new Color(244, 224, 179));
          j = j+1;
          this.spielFeld[i][j].setBackground(new Color(179, 133, 91));
      }
      i = i+1;
    }
    for(int i=0;i<8;i++){
      i = i+1;
      for(int j=0;j<7;j++){
          j = j+1;
          this.spielFeld[i][j].setBackground(new Color(244, 224, 179));
          j = j-1;
          this.spielFeld[i][j].setBackground(new Color(179, 133, 91));
          j = j+1;
      }
    }
    Image image = new ImageIcon(getClass().getResource("pawnwH.gif")).getImage();
    Image image2 = new ImageIcon(getClass().getResource("pawnwD.gif")).getImage();
    Image image3 = new ImageIcon(getClass().getResource("bishopwH.gif")).getImage();
    Image image4 = new ImageIcon(getClass().getResource("bishopwD.gif")).getImage();
    Image image5 = new ImageIcon(getClass().getResource("kingbH.gif")).getImage();
    Image image6 = new ImageIcon(getClass().getResource("kingbD.gif")).getImage();
    Image image7 = new ImageIcon(getClass().getResource("kingwH.gif")).getImage();
    Image image8 = new ImageIcon(getClass().getResource("kingwD.gif")).getImage();
    Image image9 = new ImageIcon(getClass().getResource("bishopbD.gif")).getImage();
    Image image10 = new ImageIcon(getClass().getResource("bishopbH.gif")).getImage();
    Image image11 = new ImageIcon(getClass().getResource("queenbD.gif")).getImage();
    Image image12 = new ImageIcon(getClass().getResource("queenbH.gif")).getImage();
    Image image13 = new ImageIcon(getClass().getResource("queenwD.gif")).getImage();
    Image image14 = new ImageIcon(getClass().getResource("queenwH.gif")).getImage();
    Image image15 = new ImageIcon(getClass().getResource("rookwD.gif")).getImage();
    Image image16 = new ImageIcon(getClass().getResource("rookwH.gif")).getImage();
    Image image17 = new ImageIcon(getClass().getResource("rookbH.gif")).getImage();
    Image image18 = new ImageIcon(getClass().getResource("rookbD.gif")).getImage();
    Image image19 = new ImageIcon(getClass().getResource("knightbH.gif")).getImage();
    Image image20 = new ImageIcon(getClass().getResource("knightbD.gif")).getImage();
    Image image21 = new ImageIcon(getClass().getResource("knightwH.gif")).getImage();
    Image image22 = new ImageIcon(getClass().getResource("knightwD.gif")).getImage();
    this.fenster.setResizable(false);
    this.fenster.setVisible(true);
  }
}
 

Michael...

Top Contributor
Die Größe der Buttons hängt unmittelbar an der Größe des Feldes.
Man könnte ein Dummy-Panel mit GridBagLayout verwenden, damit damit das Feld nicht zu gross angezeigt wird.

Beispiel:
Java:
	JFrame frame = new JFrame();
	JPanel panel = new JPanel(new GridBagLayout());
	JPanel field = new JPanel(new GridLayout(4, 4));
	field.setPreferredSize(new Dimension(300, 300));
	field.setMinimumSize(new Dimension(300, 300));
	for (int i=0; i<4; i++)
		for (int k=0; k<4; k++)
			field.add(new JButton("x"));
	GridBagConstraints gbc = new GridBagConstraints();
	gbc.fill = GridBagConstraints.NONE;
	panel.add(field, gbc);
	frame.getContentPane().add(panel, BorderLayout.CENTER);
	frame.getContentPane().add(new JLabel("Grave Yard"), BorderLayout.EAST);
	frame.pack();
	frame.setVisible(true);
Man muss dann aber auch verhindern, dass das Fenster zu klein wird.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Schachspiel mit DragAndDrop AWT, Swing, JavaFX & SWT 1
P MVP bei Schachspiel AWT, Swing, JavaFX & SWT 17
P Größe und Ausrichtung von Komponenten festlegen AWT, Swing, JavaFX & SWT 13
Krappe87 JavaFX minWidth/minHeigth der Stage (des Fensters) festlegen AWT, Swing, JavaFX & SWT 4
M JavaFX FXML Standartgröße festlegen AWT, Swing, JavaFX & SWT 5
F Breite beim GridBagLayout festlegen AWT, Swing, JavaFX & SWT 2
T Swing Größe einer Komponente in einem BoxLayout / FlowLayout festlegen AWT, Swing, JavaFX & SWT 7
M JXTreeTable: Spaltengröße läßt sich nicht mehr festlegen AWT, Swing, JavaFX & SWT 0
S Größe und Farbe vom JButton festlegen AWT, Swing, JavaFX & SWT 2
N JPanel größe wissen/festlegen vor dem Anzeigen AWT, Swing, JavaFX & SWT 3
T Spaltengröße einzelner Spalten in Gridlayout festlegen AWT, Swing, JavaFX & SWT 3
W Swing Optimale Fenstergröße festlegen AWT, Swing, JavaFX & SWT 4
S Rotationsachse eines 3D Objektes festlegen AWT, Swing, JavaFX & SWT 3
J Swing Unteren Abstand für JTable in JScrollPane festlegen AWT, Swing, JavaFX & SWT 10
R Größe eines Labels bei GridBagLayout festlegen AWT, Swing, JavaFX & SWT 9
J SWT Größe eines Composite mit Gridlayout festlegen AWT, Swing, JavaFX & SWT 2
N Swing JPanel Nur Breite festlegen AWT, Swing, JavaFX & SWT 7
Zettelkasten Swing JRadioButton festlegen AWT, Swing, JavaFX & SWT 2
E Wie Breite und Höhe eines Panels festlegen? AWT, Swing, JavaFX & SWT 5
J maus festlegen AWT, Swing, JavaFX & SWT 6
C Swing Größe von JPanel festlegen AWT, Swing, JavaFX & SWT 2
N breite von JList festlegen AWT, Swing, JavaFX & SWT 3
Pithecanthropus Swing JScrollBar-Position festlegen.. AWT, Swing, JavaFX & SWT 3
E Problem: Größe von Komponenten festlegen AWT, Swing, JavaFX & SWT 4
G GridBagLayout - Komponententbreite festlegen AWT, Swing, JavaFX & SWT 2
F JLabel Größe festlegen AWT, Swing, JavaFX & SWT 2
B Höhe eines Buttons festlegen AWT, Swing, JavaFX & SWT 7
G Eine Schiftart für alle Komponenten festlegen AWT, Swing, JavaFX & SWT 6
G JToggleButton - Hintergrundfarbe beim Drücken festlegen AWT, Swing, JavaFX & SWT 4
A BorderLayout Verhältnis festlegen? AWT, Swing, JavaFX & SWT 5
G verticaleBox, horizontaleBox, Größe festlegen AWT, Swing, JavaFX & SWT 2
A JToolBar: Buttonbreite festlegen AWT, Swing, JavaFX & SWT 7
S Position eines Fensters festlegen AWT, Swing, JavaFX & SWT 2
vogella JToolBar mit JTextField - Größe des Text Feldes festlegen AWT, Swing, JavaFX & SWT 2
O Minimalgröße für JFrame festlegen AWT, Swing, JavaFX & SWT 2
W Festlegen was selektiert wird AWT, Swing, JavaFX & SWT 8
lin Bildgrösse festlegen AWT, Swing, JavaFX & SWT 6
R aktuelles Sichtfeld eines JTextPane festlegen AWT, Swing, JavaFX & SWT 6
M JComboBox: Länge festlegen AWT, Swing, JavaFX & SWT 7
K Transparente Farbe festlegen AWT, Swing, JavaFX & SWT 3
Z JTextPane (text/html): Schrift festlegen AWT, Swing, JavaFX & SWT 5
J jframe minimale grösse festlegen AWT, Swing, JavaFX & SWT 5
L wie kann man die Höhe und Breite von JList festlegen AWT, Swing, JavaFX & SWT 3
B linken rand einer JList-zelle festlegen AWT, Swing, JavaFX & SWT 4
G JButton Größe festlegen? AWT, Swing, JavaFX & SWT 10
M int frame groesse festlegen AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben