📄 PlakaOlustur.java .java dosyası
⬇️ İndir
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.InputStream;
import java.nio.file.Path;
import java.nio.file.Paths;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.text.AbstractDocument;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
public class PlakaOlustur {
public static String fontYolu = "font/Oswald-Bold.ttf";
public static Font font = fontYukle(fontYolu);
public static String plakaSehirKodu;
public static String plakaHarfKodu;
public static String plakaSayiKodu;
public static int harfUzunlugu;
public static int plakaSayi;
public static int plakaSehir;
public PlakaOlustur() {
JFrame frame = new JFrame("Plaka Resmi JPG | Java Blackboard [117]");
JPanel anapanel = new JPanel();
anapanel.setLayout(null);
anapanel.setBounds(0,0,1055,550);
JPanel plakaInfoPaneli = new JPanel();
plakaInfoPaneli.setLayout(null);
plakaInfoPaneli.setBackground(new Color(195, 226, 244)); // Mavi background rengi
plakaInfoPaneli.setBounds(75,25,900,80);
String[] sehirler = new String[81];
sehirler[0] = "Adana";
sehirler[1] = "Adıyaman";
sehirler[2] = "Afyon";
sehirler[3] = "Ağrı";
sehirler[4] = "Amasya";
sehirler[5] = "Ankara";
sehirler[6] = "Antalya";
sehirler[7] = "Artvin";
sehirler[8] = "Aydın";
sehirler[9] = "Balıkesir";
sehirler[10] = "Bilecik";
sehirler[11] = "Bingöl";
sehirler[12] = "Bitlis";
sehirler[13] = "Bolu";
sehirler[14] = "Burdur";
sehirler[15] = "Bursa";
sehirler[16] = "Çanakkale";
sehirler[17] = "Çankırı";
sehirler[18] = "Çorum";
sehirler[19] = "Denizli";
sehirler[20] = "Diyarbakır";
sehirler[21] = "Edirne";
sehirler[22] = "Elazığ";
sehirler[23] = "Erzincan";
sehirler[24] = "Erzurum";
sehirler[25] = "Eskişehir";
sehirler[26] = "Gaziantep";
sehirler[27] = "Giresun";
sehirler[28] = "Gümüşhane";
sehirler[29] = "Hakkari";
sehirler[30] = "Hatay";
sehirler[31] = "Isparta";
sehirler[32] = "Mersin İçel";
sehirler[33] = "İstanbul";
sehirler[34] = "İzmir";
sehirler[35] = "Kars";
sehirler[36] = "Kastamonu";
sehirler[37] = "Kayseri";
sehirler[38] = "Kırklareli";
sehirler[39] = "Kırşehir";
sehirler[40] = "Kocaeli";
sehirler[41] = "Konya";
sehirler[42] = "Kütahya";
sehirler[43] = "Malatya";
sehirler[44] = "Manisa";
sehirler[45] = "Kahramanmaraş";
sehirler[46] = "Mardin";
sehirler[47] = "Muğla";
sehirler[48] = "Muş";
sehirler[49] = "Nevşehir";
sehirler[50] = "Niğde";
sehirler[51] = "Ordu";
sehirler[52] = "Rize";
sehirler[53] = "Sakarya";
sehirler[54] = "Samsun";
sehirler[55] = "Siirt";
sehirler[56] = "Sinop";
sehirler[57] = "Sivas";
sehirler[58] = "Tekirdağ";
sehirler[59] = "Tokat";
sehirler[60] = "Trabzon";
sehirler[61] = "Tunceli";
sehirler[62] = "Şanlıurfa";
sehirler[63] = "Uşak";
sehirler[64] = "Van";
sehirler[65] = "Yozgat";
sehirler[66] = "Zonguldak";
sehirler[67] = "Aksaray";
sehirler[68] = "Bayburt";
sehirler[69] = "Karaman";
sehirler[70] = "Kırıkkale";
sehirler[71] = "Batman";
sehirler[72] = "Şırnak";
sehirler[73] = "Bartın";
sehirler[74] = "Ardahan";
sehirler[75] = "Iğdır";
sehirler[76] = "Yalova";
sehirler[77] = "Karabük";
sehirler[78] = "Kilis";
sehirler[79] = "Osmaniye";
sehirler[80] = "Düzce";
int x = 50;
int y = 25;
int w = 50;
int h = 30;
int f = x + w;
JComboBox sehirlerCombo = new JComboBox(sehirler);
sehirlerCombo.setSelectedIndex(33);
sehirlerCombo.setBounds(x, y, w+100, h); x = x + f + 100;
JLabel kodLabel = new JLabel("Orta Harfler");
kodLabel.setBounds(x, y, w+100, h); x = x + w + 50;
JTextField kodTextF = new JTextField("---",3);
kodTextF.setBounds(x, y, w, h); x = x + f;
JLabel sayiLabel = new JLabel("Sayı");
sayiLabel.setBounds(x, y, w, h); x = x + w;
JTextField sayiTextF = new JTextField("----",4); // En fazla 4 karakter olabilir.
// AbstractDocument sınıfı, doküman tabanlı metin bileşenlerinin temel sınıfıdır
// ve bu tür bileşenlerin metin düzenleme özelliklerini yönetir.
((AbstractDocument) sayiTextF.getDocument()).setDocumentFilter(new DocumentFilter() {
@Override
public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
/*
Parametrelerin açıklamaları:
FilterBypass fb: Bu nesne, filtreleme işleminde orijinal metni değiştirme yeteneği sağlar.
Filtreleme işlevi, FilterBypass üzerinden gerçekleştirilen bu değişikliklerle yönlendirilir.
int offset: Bu, değiştirme işleminin metinde başlayacağı konumu belirtir.
int length: Bu, değiştirme işleminin başlayacağı konumdan itibaren
kaç karakteri değiştireceğini belirtir.
String text: Bu, kullanıcının eklemeye çalıştığı yeni metin parçasını içerir.
AttributeSet attrs: Bu, metin özelliklerini içerebilecek bir özellik kümesidir.
Genellikle bu parametre doküman özelliklerini temsil eder.
*/
String newText = fb.getDocument().getText(0, fb.getDocument().getLength()) + text;
String uzunluk = "\\d{0,4}"; // \d ifadesi rakamlar için kullanilir.
//{0,4} ifadesi en fazla 4 haneli bir sayi olacagini belirtir.
if (newText.matches(uzunluk)) { // Sadece 4 karakter girilmesii için
super.replace(fb, offset, length, text, attrs);
}
}
});
sayiTextF.setBounds(x, y, w+20, h); x = x + w + 80;
JButton kaydet = new JButton("Save as JPEG");
kaydet.setBounds(x, y, w+100, h);
// Plakanin grafik paneline eklenmesi.
JPanel plakaPanel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
int width = getWidth()-20;
int height = getHeight()-20;
int arcRadius = 21; // Köşe yarıçapı
int borderWidth = 5; // SIYAH Kenarlık kalınlığı
g2d.setColor(Color.WHITE);
g2d.fillRoundRect(3, 3, width - 7, height - 7, arcRadius, arcRadius);
g2d.setColor(new Color(0,50,255)); // Mavi TR yazan kisim.
g2d.fillRect(12, 12, 80, height - 7);
// Siyah iç çizgi çizimi
g2d.setColor(Color.BLACK);
g2d.setStroke(new BasicStroke(borderWidth));
g2d.drawRoundRect(12, 12, width - borderWidth, height - borderWidth, arcRadius, arcRadius);
}
};
plakaPanel.setBounds(55,125,965,220);
plakaPanel.setLayout(null);
plakaPanel.setPreferredSize(new Dimension(945, 200));
JLabel trLabel = new JLabel("TR");
trLabel.setFont(new Font("Verdana", Font.PLAIN, 50));
trLabel.setForeground(Color.WHITE);
trLabel.setBounds(22,120,200,55);
plakaSehir = sehirlerCombo.getSelectedIndex() + 1;
plakaSehirKodu = String.valueOf(plakaSehir);
plakaHarfKodu = kodTextF.getText();
plakaSayiKodu = sayiTextF.getText();
sehirlerCombo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
plakaSehir = sehirlerCombo.getSelectedIndex() + 1;
plakaSehirKodu = String.valueOf(plakaSehir);
if(plakaSehir<10) plakaSehirKodu = "0" + plakaSehirKodu;
plakaPanel.removeAll(); // Plakadaki her seyi siliyoruz önce.
plakaPanel.add(ilKodu(plakaSehirKodu));
plakaPanel.add(harfKodu(plakaHarfKodu));
plakaPanel.add(sayiKodu(plakaSayiKodu));
plakaPanel.add(trLabel);
plakaPanel.revalidate(); // Yeniden çizimi güncellemek için revalidate() çağrısı
plakaPanel.repaint();
}
});
kodTextF.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
char karakter = e.getKeyChar();
// Eğer harf değilse veya 3 karakteri geçtiyse tuş girişi engelleniyor
if (!Character.isLetter(karakter) || kodTextF.getText().length() >= 3) {
e.consume();
} else {
// Harf ise büyük harf olarak görüntülenmesi sağlanıyor
e.setKeyChar(Character.toUpperCase(karakter));
}
}
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
plakaHarfKodu = kodTextF.getText();
harfUzunlugu = kodTextF.getText().length();
plakaPanel.removeAll();
plakaPanel.add(ilKodu(plakaSehirKodu));
plakaPanel.add(harfKodu(plakaHarfKodu));
plakaPanel.add(sayiKodu(plakaSayiKodu));
plakaPanel.add(trLabel);
plakaPanel.revalidate();
plakaPanel.repaint();
}
}
});
sayiTextF.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
plakaSayiKodu = sayiTextF.getText();
plakaPanel.removeAll();
plakaPanel.add(ilKodu(plakaSehirKodu));
plakaPanel.add(harfKodu(plakaHarfKodu));
plakaPanel.add(sayiKodu(plakaSayiKodu));
plakaPanel.add(trLabel);
plakaPanel.revalidate();
plakaPanel.repaint();
}
}
});
kaydet.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
BufferedImage image = new BufferedImage(
plakaPanel.getWidth(),
plakaPanel.getHeight(),
BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = image.createGraphics();
plakaPanel.paint(g2);
g2.dispose();
ImageIO.write(image, "jpeg", new File(getDesktopPath()+"/" + plakaSehirKodu + "-" + plakaHarfKodu + "-" + plakaSayiKodu +".jpg"));//34-abc-2020.
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
plakaPanel.add(ilKodu(plakaSehirKodu));
plakaPanel.add(harfKodu(plakaHarfKodu));
plakaPanel.add(sayiKodu(plakaSayiKodu));
plakaPanel.add(trLabel);
plakaInfoPaneli.add(sehirlerCombo);
plakaInfoPaneli.add(kodLabel);
plakaInfoPaneli.add(kodTextF);
plakaInfoPaneli.add(sayiLabel);
plakaInfoPaneli.add(sayiTextF);
plakaInfoPaneli.add(kaydet);
anapanel.add(plakaInfoPaneli);
anapanel.add(plakaPanel);
frame.add(anapanel);
frame.setSize(1055,550);
frame.setLayout(null);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static String getDesktopPath() {
// Masaüstü yolunun alinmasi.
Path desktopYolu = Paths.get(System.getProperty("user.home"), "Desktop");
String desktopYoluString = desktopYolu.toString();
return desktopYoluString;
}
public static JLabel ilKodu(String plaka) {
JLabel ilKoduLabel = new JLabel(plaka);
ilKoduLabel.setHorizontalAlignment(JLabel.LEFT);
ilKoduLabel.setFont(font);
ilKoduLabel.setBounds(102,5,180,180);
return ilKoduLabel;
}
public static JLabel harfKodu(String harfler) {
JLabel harfKoduLabel = new JLabel(harfler);
harfKoduLabel.setHorizontalAlignment(JLabel.CENTER);
harfKoduLabel.setFont(font);
harfKoduLabel.setBounds(250,5,400,180);
return harfKoduLabel;
}
public static JLabel sayiKodu(String sayilar) {
JLabel sayiKoduLabel = new JLabel(sayilar);
sayiKoduLabel.setHorizontalAlignment(JLabel.RIGHT);
sayiKoduLabel.setFont(font);
sayiKoduLabel.setBounds(535,5,400,180);
return sayiKoduLabel;
}
public static Font fontYukle(String fontAdres) {
try {
InputStream fontStream = ClassLoader.getSystemResourceAsStream(fontAdres);
Font font = Font.createFont(Font.TRUETYPE_FONT, fontStream);
fontStream.close();
return font.deriveFont(Font.PLAIN, 140); // Font boyutunu ayarla
} catch (Exception e) {
e.printStackTrace();
return new Font("Arial", Font.PLAIN, 150); // Hata durumunda varsayılan font kullan
}
}
public static void main(String[] args) {
new PlakaOlustur();
}
}