universe@1: package de.uapcore.sudoku; universe@1: universe@1: import java.awt.Color; universe@1: import java.awt.Graphics; universe@1: import java.awt.Graphics2D; universe@1: import java.awt.GridBagConstraints; universe@1: import java.awt.GridBagLayout; universe@1: import java.awt.Insets; universe@1: import java.awt.image.BufferedImage; universe@1: import javax.swing.JPanel; universe@1: universe@1: /** universe@1: * universe@1: * @author mike universe@1: */ universe@2: public final class Field extends JPanel { universe@1: private SudokuTextField[][] cells; universe@1: universe@1: public Field() { universe@1: setBackground(Color.WHITE); universe@1: universe@1: setLayout(new GridBagLayout()); universe@1: GridBagConstraints c = new GridBagConstraints(); universe@1: c.insets = new Insets(5, 5, 5, 5); universe@1: universe@1: cells = new SudokuTextField[9][9]; universe@1: for (int x = 0 ; x < 9 ; x++) { universe@1: for (int y = 0 ; y < 9 ; y++) { universe@1: cells[x][y] = new SudokuTextField(); universe@1: c.gridx = x; universe@1: c.gridy = y; universe@1: add(cells[x][y], c); universe@1: } universe@1: } universe@1: } universe@1: universe@1: @Override universe@1: public void paint(Graphics graphics) { universe@1: super.paint(graphics); universe@1: final int w = getWidth(); universe@1: final int h = getHeight(); universe@1: final int cw = w / 9; universe@1: final int ch = h / 9; universe@1: universe@1: BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); universe@1: Graphics2D g = img.createGraphics(); universe@1: g.setBackground(Color.WHITE); universe@1: g.clearRect(0, 0, w, h); universe@1: universe@1: g.setColor(Color.BLACK); universe@1: g.drawRect(1, 1, w-2, h-2); universe@1: g.drawRect(2, 2, w-4, h-4); universe@1: for (int x = cw ; x < w ; x += cw) { universe@1: for (int y = ch ; y < h ; y += ch) { universe@1: g.drawLine(x, 2, x, h-2); universe@1: g.drawLine(2, y, w-2, y); universe@1: if ((x / cw) % 3 == 0) { universe@1: g.drawLine(x+1, 2, x+1, h-2); universe@1: } universe@1: if ((y / ch) % 3 == 0) { universe@1: g.drawLine(2, y+1, w-2, y+1); universe@1: } universe@1: } universe@1: } universe@1: universe@1: graphics.drawImage(img, 0, 0, this); universe@1: } universe@1: universe@2: public int getCellValue(int x, int y) { universe@2: return cells[x][y].getValue(); universe@2: } universe@1: universe@2: public void setCellValue(int x, int y, int v) { universe@2: cells[x][y].setValue(v); universe@2: } universe@2: universe@2: public void setAllCellsModified(boolean modified) { universe@2: for (int x = 0 ; x < 9 ; x++) { universe@2: for (int y = 0 ; y < 9 ; y++) { universe@2: cells[x][y].setModified(modified); universe@2: } universe@2: } universe@2: } universe@2: universe@2: public boolean isAnyCellModified() { universe@2: for (int x = 0 ; x < 9 ; x++) { universe@2: for (int y = 0 ; y < 9 ; y++) { universe@2: if (cells[x][y].isModified()) { universe@2: return true; universe@2: } universe@2: } universe@2: } universe@2: return false; universe@2: } universe@1: }