📄 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(); } }