/** Deals with the incorrect array */ private void tegnBrett() { bokser = new JPanel[(str/boksX) * (str/boksY)]; ruter = new JTextField[str * str]; int ctr = 0; for (int i = 0; i < bokser.length; i++) { bokser[i] = new JPanel(); bokser[i].setLayout(new GridLayout(boksX, boksY)); bokser[i].setBorder(BorderFactory.createEmptyBorder(2,2,2,2)); sudokuBrett.add(bokser[i]); for (int j = ctr; j < ruter.length; j++) { ruter[j] = new JTextField(1); ruter[j].setBorder(BorderFactory.createLineBorder(Color.BLACK, 1)); ruter[j].setHorizontalAlignment(JTextField.CENTER); ruter[j].setFont(new Font("sans serif", Font.BOLD, 20)); bokser[i].add(ruter[j]); ctr++; if (ctr % (boksX * boksY) == 0) { break; } } } } /** Reads data from file and inputs wrongly into the incorrect array */ private void tolkFil(File f) { minIO io = new minIO(); String[] brettInfo = null; // Leser filinnhold inn i array. brettInfo = io.lesFil(f).split(System.getProperty("line.separator")); // henter størrelser. str = Integer.parseInt(brettInfo[0]); boksX = Integer.parseInt(brettInfo[1]); boksY = Integer.parseInt(brettInfo[2]); int[][] brettData = new int[str][str]; char[] guiData = new char[str*str]; // hent data fra selve brettet. int ctr = 0; for (int x = 0; x < brettInfo.length - 3; x++) { char[] r = brettInfo[x + 3].toCharArray(); for (int y = 0; y < r.length; y++) { // sørger for at vi får riktige tall inn. if (r[y] == '.') brettData[x][y] = 0; else if ((int) r[y] - '0' < 10) brettData[x][y] = (int) r[y] - '0'; else if (r[y] == '@') brettData[x][y] = 36; else brettData[x][y] = (int) r[y] - 55; // leser det samme inn i array for GUI. guiData[ctr] = r[y]; ctr++; } } for (int i = 0; i < ruter.length; i++) { if (guiData[i] != '.') ruter[i].setText("" + guiData[i]); } }