Я не знаю, для чего вы хотите использовать сетку, но я бы использовал 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()
вы можете проверить, является ли поле сетки живым или каким-либо другим образом, и нарисовать его, однакотебе нравится.