Java’da JPanel ve JSlider kullanimi

Bu dersimizde Java’da JPanel ve JSlider kullanimina örnek verecegim. Uygulamamizin amaci kisaca su sekilde olacak: JPanel nesnesinin rengini bir Color nesnesi ile belirleyecegim. Bu Color nesnesinin yapilandiricisini RGB degerleri alanindan seçtim.

RGB, yani Red-Green-Blue (kirmizi-yesil-mavi). 3 ana renk belirli oranlarda karistirilinca diger bütün renklerden elde ediliyor. Bu üç parametre 0 ilâ 255 arasinda deger aliyor. Örnegin red=255, green=0, blue=0 olunca tam kirmizi elde ediliyor.

.

Iste uygulamamizda kullanacagimiz 3 adet JSlider bu renklerin degerlerini belirlemek için kullanilacak.

Uygulamamizin taslagi iki ana bölümden olusuyor:

  • BorderLayout.CENTER (renkPaneli buraya gelecek)
  • BorderLayout.SOUTH (butonPaneli buraya gelecek)

Ayrica butonPaneli nesnemizin kendisi de bir panel. 3’er adet label, JSlider ve textfiled içeriyor. Bunlarin da bir düzene göre yerlesmesi lazim. Bunun için uygun yerlesim sekli ise GridLayout(3,3) (3 satir, 3 sütun) olarak belirlendi.

Uygulamamizin yerlesimi kaba taslak bu sekilde yapildi; kodlari ise su sekilde:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class MyFrame extends JFrame
{
  private JPanel renkPaneli = new JPanel();

   //Renklerimizi göstermek icin bir tane panel olusturuyoruz
   private JPanel butonPaneli = new JPanel();

  //Panelimizdeki renkleri belirlemek için 3 tane
  //slider olusturuyoruz

  JSlider sliderRed = new JSlider(0,255);
  JSlider sliderGreen = new JSlider(0,255);
  JSlider sliderBlue = new JSlider(0,255);

  //3 adet textfield olusturuyoruz

  JTextField txtRed = new JTextField("Kirmizi");
  JTextField txtGreen = new JTextField("Yesil");
  JTextField txtBlue = new JTextField("Mavi");

  public MyFrame() {

    super("Renk Paneli");

    butonPaneli.setLayout(new GridLayout(3,3));

    //slider ve label nesnelerini penceremize ekliyoruz

    butonPaneli.add(new JLabel("Kirmizi:"));
    butonPaneli.add(sliderRed);
    sliderRed.addChangeListener(new MyChangeListener());
    butonPaneli.add(txtRed);

    butonPaneli.add(new JLabel("Yesil:"));
    butonPaneli.add(sliderGreen);
    sliderGreen.addChangeListener(new MyChangeListener());
    butonPaneli.add(txtGreen);

    butonPaneli.add(new JLabel("Mavi:"));
    butonPaneli.add(sliderBlue);
    sliderBlue.addChangeListener(new MyChangeListener());
    butonPaneli.add(txtBlue);

    add(renkPaneli, BorderLayout.CENTER);
    add(butonPaneli, BorderLayout.SOUTH);


    setSize(500,500);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setVisible(true);

  }

/*Bu sinif içerisinde, slider nesnelerinin muhtemel degisikligi esnasinda yapilacak seyler belirleniyor.*/

  private class MyChangeListener implements ChangeListener{
    public void stateChanged(ChangeEvent e) {
      int r = sliderRed.getValue();
      int g = sliderGreen.getValue();
      int b = sliderBlue.getValue();

      renkPaneli.setBackground(new Color(r,g,b));

      txtRed.setText("Kirmizi: "+r);
      txtGreen.setText("Yesil: "+g);
      txtBlue.setText("Mavi: "+b);
    }
  }

  public static void main(String[] arg) {
    new MyFrame();
  }
}
.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir