📄 SayilardanCerceveDeseni.java .java dosyası
⬇️ İndir
import java.awt.Color;
import java.util.Scanner;
import javax.swing.*;
public class SayilardanCerceveDeseni {
public static int[][] desen;
public static int n = 5;
public static int cerceve = (n+1)/2;
public static int sabit = cerceve-2;
// n=17 -> cerceve = 9 -> sabit = 7
// n=15 -> cerceve = 8 -> sabit = 6
// n=13 -> cerceve = 7 -> sabit = 5
// n=11 -> cerceve = 6 -> sabit = 4
// n=9 -> cerceve = 5 -> sabit = 3
// n=7 -> cerceve = 4 -> sabit = 2
// n=5 -> cerceve = 3 -> sabit = 1
// n=3 -> cerceve = 2 -> sabit = 0
public SayilardanCerceveDeseni() {
System.out.print("2 - 18 arasinda bir tek sayi giriniz : " );
Scanner klavye = new Scanner(System.in);
n = klavye.nextInt();
if ((n%2 == 0) || (n<3 || n>17)) {
System.out.println("Uygun sart saglanmadi");
System.err.println("Program sonlandirildi...");
System.exit(0);
}
cerceve = (n+1)/2;
sabit = cerceve-2;
desen = new int[n][n];
klavye.close();
System.out.println();
for (int i=cerceve ; i>=1 ; i--) {
cerceveOlustur(i);
}
// By for döngüsü CONSOLE çiktisi veriyor.
for(int i = 0; i<n; i++) {
for(int j = 0; j<n; j++) {
System.out.print(desen[i][j]);
}
System.out.println();
}
// JFrame içinde renkli panellerin gösterildigi metodu cagiriyoruz.
frameGoster();
}
public static void cerceveOlustur(int kare) {
for (int i=cerceve-kare ; i<=kare+sabit ; i++) {
for (int j=cerceve-kare ; j<=kare+sabit ; j++) {
desen[i][j] = kare;
}
}
}
public static JFrame frameGoster() {
JFrame frame = new JFrame("067 Sayilardan Cerceve Deseni JFrame çözümü");
frame.setLayout(null);
Color background = new Color(0,0,0);
Color[] renk = new Color[9];
renk[0] = new Color(126, 203, 247); // mavi
renk[1] = new Color(254, 217, 0); // sari
renk[2] = new Color(118, 222, 142); // yesil
renk[3] = new Color(242, 183, 5); // tuuncu
renk[4] = new Color(209, 132, 213); // lila
renk[5] = new Color(167, 189, 204); // fume
renk[6] = new Color(153, 23, 59); // bordo
renk[7] = new Color(11, 219, 247); //CamGobegi
renk[8] = new Color(183, 174, 242); // mor
JPanel[][] panel = new JPanel[n][n];
JLabel labelSayi= new JLabel();
int baslangicNoktasi = 20;
int fark = 51;
int olcu = fark-3;
int x = baslangicNoktasi;
int y = baslangicNoktasi;
int genislik = olcu;
int yukseklik = olcu;
for(int i = 0; i<n; i++) {
for(int j = 0; j<n; j++) {
panel[i][j] = new JPanel(); // cok zor cozeceginiz bir null hatasi alirsiniz...
panel[i][j].setLayout(null);
switch (desen[i][j]) {
// case 0 : background = renk[0]; break;
case 1 : background = renk[1]; break;
case 2 : background = renk[2]; break;
case 3 : background = renk[3]; break;
case 4 : background = renk[4]; break;
case 5 : background = renk[5]; break;
case 6 : background = renk[6]; break;
case 7 : background = renk[7]; break;
case 8 : background = renk[8]; break;
case 9 : background = renk[0]; break;
}
panel[i][j].setBackground(background);
panel[i][j].setBounds((x + (j*fark)),y,genislik,yukseklik);
labelSayi = new JLabel(""+desen[i][j]);
labelSayi.setBounds(0, 0, genislik,yukseklik);
labelSayi.setHorizontalAlignment(JLabel.CENTER);
panel[i][j].add(labelSayi);
frame.add(panel[i][j]);
}
x = baslangicNoktasi;
y = y + fark;
}
frame.setSize(900, 930);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setVisible(true);
return frame;
}
}