Kikenie
Legacy Member
Hey iedereen,
ik ben bezig met een sudoku programma te maken maar ik zit al sinds het begin met een lastig probleem.
Een sudoku bestaat uit verschillende blokken (vb 3x3 blokken voor een standaard sudoku). Zo'n blok bestaat op zich uit verschillende vakken (vb 3x3 voor standaard sudoku). De grootte van zo'n blok bereken ik aan de hand van het aantal vakken en hun grootte, en vergelijkbaar bereken ik de grootte van de sudoku. Toch blijkt die grootte niet te kloppen. Op deze foto kan je het probleem zien. De oranje en groene stukken tonen waar de problemen zitten.
Hieronder staat de code (sterk vereenvoudigd tot wat echt nodig is).
Nog ter info, een vak erft over van jLabel, blok en sudoku erven over van jPanel.
De groene en oranje achtergrond zijn gezet om het probleem duidelijker te maken op de foto.
Ik dacht dat het probleem erin zat dat de border ook meegerekend werd in de breedte maar ik heb hiervoor al vanalles geprobeerd maar tot nu toe is het mij nog ni gelukt het in orde te krijgen.
Op voorhand bedankt voor de hulp.
Kikenie
ik ben bezig met een sudoku programma te maken maar ik zit al sinds het begin met een lastig probleem.
Een sudoku bestaat uit verschillende blokken (vb 3x3 blokken voor een standaard sudoku). Zo'n blok bestaat op zich uit verschillende vakken (vb 3x3 voor standaard sudoku). De grootte van zo'n blok bereken ik aan de hand van het aantal vakken en hun grootte, en vergelijkbaar bereken ik de grootte van de sudoku. Toch blijkt die grootte niet te kloppen. Op deze foto kan je het probleem zien. De oranje en groene stukken tonen waar de problemen zitten.
Hieronder staat de code (sterk vereenvoudigd tot wat echt nodig is).
Nog ter info, een vak erft over van jLabel, blok en sudoku erven over van jPanel.
Code:
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.*;
import javax.swing.border.LineBorder;
public class Sudoku extends JPanel{
public Sudoku(int cols, int rows) {
this.setBorder(new LineBorder(Color.BLACK));
this.setLayout(new GridLayout(rows,cols));
int breedte = Constanten.ZijdeVak * rows * cols;
int hoogte = Constanten.ZijdeVak * rows * cols;
for(int i=0;i<rows*cols;i++){
this.add(new Blok(cols,rows));
}
this.setBackground(Color.ORANGE);
this.setSize(breedte,hoogte);
}
public class Blok extends JPanel{
public Blok(int cols, int rows) {
this.setLayout(new GridLayout(cols,rows));
this.setBorder(new LineBorder(Color.BLACK));
this.setBackground(Color.GREEN);
for(int i=0;i<cols*rows;i++){
this.add(new Vak());
}
this.setSize(cols*Constanten.ZijdeVak,rows*Constanten.ZijdeVak);
}
}
public class Vak extends JLabel{
public Vak(){
this.setBackground(Color.WHITE);
this.setOpaque(true);
this.setBorder(new LineBorder(Color.BLACK));
this.setSize(Constanten.ZijdeVak,Constanten.ZijdeVak);
}
}
abstract class Constanten {
protected static final int ZijdeVak = (35);
}
}
De groene en oranje achtergrond zijn gezet om het probleem duidelijker te maken op de foto.
Ik dacht dat het probleem erin zat dat de border ook meegerekend werd in de breedte maar ik heb hiervoor al vanalles geprobeerd maar tot nu toe is het mij nog ni gelukt het in orde te krijgen.
Op voorhand bedankt voor de hulp.
Kikenie