Hallo!
Ich bin gerade dabei, das Spiel "Vier Gewinnt" zu programmieren und habe mit der Oberfläche angefangen.
Dazu hab ich jetzt folgende Frage: Gibt es eine Möglichkeit, dass die Einzelfelder aneinander "haften" bleiben (nicht voneinander getrennt/entfernt werden), wenn man im Quellcode oder zur Laufzeit mit der Maus die Größe des Fensters ändert?
Hier mal das, was ich bisher auf die Reihe bekommen habe:
(Ich habe im Hauptfenster das BorderLayout genommen, um später noch ein paar Anzeigen um das Spielfeld herum einzufügen)
Ich bin gerade dabei, das Spiel "Vier Gewinnt" zu programmieren und habe mit der Oberfläche angefangen.
Dazu hab ich jetzt folgende Frage: Gibt es eine Möglichkeit, dass die Einzelfelder aneinander "haften" bleiben (nicht voneinander getrennt/entfernt werden), wenn man im Quellcode oder zur Laufzeit mit der Maus die Größe des Fensters ändert?
Hier mal das, was ich bisher auf die Reihe bekommen habe:
Java:
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Hauptfenster extends JFrame{
private JPanel contentPane = (JPanel) getContentPane();
public Hauptfenster() {
contentPane.setLayout(new BorderLayout());
contentPane.add(new Spielfeld(), BorderLayout.CENTER);
}
public static void main(String[] args) {
Hauptfenster frame=new Hauptfenster();
frame.setSize(new Dimension(800, 600));
frame.setTitle("Vier Gewinnt");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
Java:
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JPanel;
public class Spielfeld extends JPanel{
private Feld[][] felder=new Feld[7][6];
private GridBagLayout gbl=new GridBagLayout();
private GridBagConstraints gbc = new GridBagConstraints();
public Spielfeld(){
setLayout(gbl);
gbc.weightx = 1;
gbc.weighty = 1;
gbc.fill = GridBagConstraints.BOTH;
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 6; j++) {
felder[i][j]=new Feld();
gbc.gridx=i;
gbc.gridy=j;
gbl.setConstraints(felder[i][j], gbc);
add(felder[i][j], gbc);
}
}
}
}
Java:
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import javax.swing.JComponent;
public class Feld extends JComponent{
private Rectangle2D.Float rechteck = new Rectangle2D.Float(0,0,60,60);
private Ellipse2D.Float kreis = new Ellipse2D.Float(5,5,50,50);
public void paint (Graphics g){
Graphics2D g2 = (Graphics2D) g;
g2.setStroke(new BasicStroke(1));
g2.setPaint(Color.BLUE);
g2.fill(rechteck);
g2.draw(rechteck);
g2.setPaint(Color.WHITE);
g2.fill(kreis);
g2.draw(kreis);
}
}