28 Ocak 2014 Salı

Java dinamik JButton oluşturma (sinema salonu)

1 comment
Merhaba arkadaşlar. Bu yazıda Java'da nasıl dinamik olarak JButton'lar oluşturabileceğimizi anlatacağım. Örnek olarak aşağıdaki resimde olduğu gibi sinema salonu oluşturacağım.

NOT : Dinamik oluşturulan butonlara tıklandığında yapılacak işlemleri belirlemeyi yani actionPerformed oluşturmayı bir sonraki yazıda anlatacağım.


İlk olarak yeni bir JFrame oluşturuyorum. Eclipse'te nasıl JFrame oluşturulduğunu öğrenmek için http://bilgisayar-muhendisleri.blogspot.com.tr/2013/07/eclipse-form-jframe-olusturma.html yazısını okuyabilirsiniz.

JFrame oluşturduktan sonra kodlarımı yazmaya başlıyorum.

İç içe 2 for döngüsü kullanıyorum. İlk döngü sütun sayısını (1'den 12'ye kadar), ikinci döngü de satır sayısını belirleyecek (1'den 8'e kadar).

                for(int i=1;i<=12;i++)
{
for(int j=1;j<=8;j++)
{
                        }
                 }

Resimde görüldüğü gibi üstten 3.sırada koltuk numarası 3'ten başlıyor. Bunun için bir if şartı koyuyorum.

                                if(((i==1)&&(j==3))||((i==2)&&(j==3)))
{
continue;
}
Bu if şartıyla 3.satırda 1. ve 2. sütunda koltuk oluşturmuyorum. Diğer koltukları oluşturmak için aşağıdaki kodu kullanıyorum.

                                else
{

final JButton btn_ij = new JButton(Integer.toString(i));
btn_ij.setFont(new Font("Tahoma", Font.PLAIN, 12));
btn_ij.setBounds(i*60, j*45, 48, 33);
btn_ij.setBackground(Color.green);
btn_ij.setForeground(Color.black);
btn_ij.setName(Integer.toString(i) + Integer.toString(j));
contentPane.add(btn_ij);
}

Bu kodda önce butonu oluşturuyorum. btn_ij adında buton oluşturup içine sıra numarasını yani i'yi yazdırıyorum.

Ardından yazı tipi özelliklerini belirliyorum.

Daha sonra butonun konumunu belirliyorum.

Arkaplan rengini yeşil, font rengini de siyah yapıyorum.

setName komutu ile butona adını veriyorum.

Son olarak da panele butonu ekliyorum.

Kodun tamamı

package blog;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.*;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.*;

public class dinamikjbutton extends JFrame {

private JPanel contentPane;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
dinamikjbutton frame = new dinamikjbutton();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public dinamikjbutton() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 835, 470);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
for(int i=1;i<=12;i++)
{
for(int j=1;j<=8;j++)
{
final int sutun = i;
final int satir = j;
if(((i==1)&&(j==3))||((i==2)&&(j==3)))
{
continue;
}

else
{
final JButton btn_ij = new JButton(Integer.toString(i));

btn_ij.setFont(new Font("Tahoma", Font.PLAIN, 12));
btn_ij.setBounds(i*60, j*45, 48, 33);
btn_ij.setBackground(Color.green);
btn_ij.setForeground(Color.black);
btn_ij.setName(Integer.toString(i) + Integer.toString(j));
contentPane.add(btn_ij);
}
}
}
}

}

If You Enjoyed This, Take 5 Seconds To Share It

1 yorum:

Unknown dedi ki...

ben netbeans ta yazıyorumda contentPane.add(btn_ij); burada hata çıkıyo değiştirmeme rağmen hatayı düzeltemedim ne yapmalıyım