Hallo,
wir wollen ein Spielbrett als grafische Oberfläche anlegen und dazu das GridBagLayout verwenden. Soweit klappt alles. Allerdings liegen unsere grafischen Komponenten viel zu weit auseinander. Wie kann man das Gitter so skalieren, damit unsere JLabels (runde Spielfelder) proportional im richtigen Abstand zueinander angezeigt werden? Der Abstand sollte so ca. die Hälfte der Spielfeldgröße betragen....
wir wollen ein Spielbrett als grafische Oberfläche anlegen und dazu das GridBagLayout verwenden. Soweit klappt alles. Allerdings liegen unsere grafischen Komponenten viel zu weit auseinander. Wie kann man das Gitter so skalieren, damit unsere JLabels (runde Spielfelder) proportional im richtigen Abstand zueinander angezeigt werden? Der Abstand sollte so ca. die Hälfte der Spielfeldgröße betragen....
Code:
import javax.swing.*;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Insets;
public class Spielbrett extends JFrame{
private ImageIcon icon, icon2;
public static void main (String[]args){
Spielbrett sb = new Spielbrett(); //Erzeugung des JFrames "Spielbrett"
sb.setLocation(10,10); //Ort angeben, (in Pixel), an dem das erzeugte Spielbrett auf dem Fenster erscheint
sb.setSize(300,300); //Größe des Spielbretts
sb.setVisible(true); //Spielbrett sichtbar machen
}
public Spielbrett(){
super();//Aufruf des Konstruktors der Superklasse "JFrame"
icon = new ImageIcon("Kreis.png"); //Erzeugung eines neuen ImageIcon-Objekts
GridBagLayout gbl = new GridBagLayout();//Erzeugen eines Objekts vom Typ GridBagLayout
GridBagConstraints gbc;//Objekt vom Typ GridBagConstraints
this.setLayout(gbl);//Zuweisen des GridBagLayouts
Spielfeld sf1 = new Spielfeld(icon);//Erzeugung eines Spielfeld-Objekts
gbc = makegbc(0,0,0,0);//Zuweisung der Werte zu dem GridBagConstraints-Objekt mit der Methode "makegbc"
gbc.weightx = 100; //Horizontale Raumverteilung
gbc.weighty = 100;//Vertikale Raumverteilung
gbc.fill = GridBagConstraints.BOTH;//Skalierung der Größe der grafischen Komponente
gbl.setConstraints(sf1, gbc);//
this.add(sf1);
//ImageIcon icon2 = new ImageIcon("Kreis.png");
Spielfeld sf2 = new Spielfeld(icon);
gbc = makegbc(0,1,1,0);
gbc.weightx = 100;
gbc.weighty = 100;
gbc.fill = GridBagConstraints.BOTH;
gbl.setConstraints(sf2, gbc);
this.add(sf2);
Spielfeld sf3= new Spielfeld(icon);
gbc = makegbc(1,1,1,0);
gbc.weightx = 100;
gbc.weighty = 100;
gbc.fill = GridBagConstraints.BOTH;
gbl.setConstraints(sf3, gbc);
this.add(sf3);
Spielfeld sf4 = new Spielfeld(icon);
gbc = makegbc(1,0,0,1);
gbc.weightx = 100;
gbc.weighty = 100;
gbc.fill = GridBagConstraints.BOTH;
gbl.setConstraints(sf4, gbc);
this.add(sf4);
}
/**
* Methode zum Speichern der Werte für das
* GridBagConstraint-Objekts
*/
private GridBagConstraints makegbc(int x, int y, int width, int height){
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = width;
gbc.gridheight = height;
gbc.insets = new Insets(1,1,1,1);
return gbc;
}
}
import javax.swing.*;
public class Spielfeld extends JLabel{
private boolean istBesetzt;
private String color;
public Spielfeld(ImageIcon icon){
super(icon);
istBesetzt = false;
color = "";
}