Создание сетки с прямоугольниками - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь создать сетку прямоугольников, но не знаете, как отсюда идти?Я также не знаю, правильно ли это до сих пор

public CGOL (int x, int y, int size, int squares1) {
  numberOfSquares = 100;
  isAlive = new boolean [numberOfSquares][numberOfSquares];
  squares = new Rectangle.Double [numberOfSquares][numberOfSquares];
  int rows = 12;
  int cols = 40;
  int width = getSize().width;
  int height = getSize().height;

  int rowHt = height / (rows);
  int rowWid = width / (cols);

  for (int i = 0; i < rows ; i++) {
    for (int j = 0; i < rows ; j++) {
    double locationX = (i * rowHt);
    double locationY = (j * rowWid);


squares[i][j] = new Rectangle2D.Double(locationX,locationY, rows, cols);

1 Ответ

0 голосов
/ 11 декабря 2018

Я не знаю, для чего вы хотите использовать сетку, но я бы использовал JPanel, чтобы нарисовать сетку.Вот рабочий пример.Сначала JFrame:

package net.stackoverflow;

import javax.swing.JFrame;

public class MainFrame extends JFrame {

    static final long serialVersionUID = 19670916;

    protected GridPanel gridPanel = null;

    public MainFrame() {

        setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

        createGui();
        setVisible( true );
    }

    protected void createGui() {

        setSize( 600, 400 );
        setTitle( "Test Grid" );

        gridPanel = new GridPanel();

        add( gridPanel );
    }

    public static void main(String args[]) {

        MainFrame mf = new MainFrame();     
    }

}

А теперь JPanel:

package net.stackoverflow;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.util.ArrayList;

import javax.swing.JPanel;

public class GridPanel extends JPanel {

    private static final long serialVersionUID = -5341480790176820445L;

    private final int NUM_SQUARES = 100;
    private final int RECT_SIZE = 10;
    private ArrayList<Rectangle> grid = null;

    public GridPanel() {

        setSize( 200, 200 );

        // Build the grid
        grid = new ArrayList<Rectangle>( NUM_SQUARES );
        for( int y=0; y < NUM_SQUARES / 10; ++y ) {
            for( int x=0; x < NUM_SQUARES / 10; ++x ) {
                Rectangle rect = new Rectangle( x * RECT_SIZE, y * RECT_SIZE, RECT_SIZE, RECT_SIZE );
                grid.add( rect );
            }
        }
    }

    @Override
    protected void paintComponent(Graphics g) {

        super.paintComponent( g );

        g.setColor(Color.WHITE);
        g.fillRect(0, 0, 200, 200);

        // paint the grid
        for( Rectangle r : grid ) {

            g.setColor(Color.BLACK);
            g.drawRect( r.x, r.y, r.width, r.height );
        }
    }
}

В пределах paintComponent() вы можете проверить, является ли поле сетки живым или каким-либо другим образом, и нарисовать его, однакотебе нравится.

...