Das ganze könntest du rekursiv lösen.
Dafür solltest du beim repaint auf jeden Fall double buffering verwenden.
In der rekursiven Methode solltest du
- entscheiden, wie geteilt wird (horizontal/vertikal) und
- die Breite eines Feldes ermitteln (Zufall) und die andere bestimmen
Danach rufst du die Methode dann rekursiv für jedes Teilrechteck auf.
Dafür kannst du die von dir geschriebene Klasse
Rectangle verwenden.
Die rekursive Methode könnte also zum Beispiel folgende Signatur haben:
Code:
protected void split(Rectangle rect)
Wichtig: Du brauchst eine Verschachtelungstiefe, damit das ganze nicht endlos läuft!