کنترل JColorChooser

از کنترل JColorChooser وقتی استفاده می شود که شما بخواهید یک رنگ انتخاب کنید. به عنوان مثال وقتی بخواهید رنگ یک فونت یا رنگ پس زمینه فرم را تغییر دهید می توانید از این کنترل استفاده کنید. سازنده این کلاس به روش های زیر مقداردهی می شود :

public JColorChooser()
public JColorChooser(Color initialColor)
public JColorChooser(ColorSelectionModel model)

نمای کلی کنترل JColorChooser در شکل زیر مشاهده می کنید :
JColorChooser-in-java-01

پنجره JColorChooser از رنگ های از پیش تعریف شده تشکیل شده است (شماره 2). شما می توانید با کیلک بر روی سربرگ های این پنجره (شماره 1) تعداد بیشتری رنگ مشاهده کنیید به طوری که در پنجره ظاهر شده هر رنگی که دوست دارید را انتخاب نمایید. همچنین با استفاده از پنجره Preview (شماره 3) می توانید پیش نمایشی از اعمال رنگ مورد نظرتان بر قسمت های مختلف یک کنترل (متن، پس زمینه متن، خاشیه کنترل و …) را مشاهده نمایید. برای نشان دادن عملکرد کادر محاوره ای JColorChooser به کد زیر توجه کنید :

   1: import java.awt.*;
   2: import javax.swing.*;
   3: import java.awt.event.*;
   4: 
   5: public class FrameDemo 
   6: {
   7:     public static void main(String[] args)
   8:     {
   9:         JFrame frame1 = new JFrame("JColorChooser Demo");        
  10:         final JPanel panel1 = new JPanel();        
  11:         JButton button1 = new JButton("Change Panel Color");
  12:         
  13:         panel1.add(button1);       
  14:         frame1.add(panel1);
  15:         
  16:         button1.addActionListener(new ActionListener() 
  17:         {
  18:             public void actionPerformed(ActionEvent e) 
  19:             {
  20:                 Color selectedColor = JColorChooser.showDialog(panel1,"Choose Background Color",panel1.getBackground());
  21:                 
  22:                 if(selectedColor != null)
  23:                 {
  24:                     panel1.setBackground(selectedColor);
  25:                 }
  26:             }
  27:         });
  28:         
  29:         frame1.setSize(416, 313);
  30:         frame1.setVisible(true);      
  31:     }   
  32: }

هدف برنامه بالا اعمال رنگ به پس زمینه یه Panel می باشد. در خطوط 14-9 یک کنترل دکمه به Panel و Panel را به یک Frame اضافه کرده ایم. چون که قرار است با کلیک بر روی دکمه کادر محاوره ای JColorChooser نمایش داده شود، پس باید رابط ActionListener را پیاده سازی کنیم. در خطوط 27-16 این کار را انجام داده و سپس در بدنه متد ()actionPerformed رابط خطوط 25-20 را می نویسید. در خط 20 ابتدا یک رنگ را انتخاب می کنیم. در این خط ابتدا یک شئ از کلاس Color ایجاد می کنیم. این کلاس یک رنگ را در اختیار ما می گذارد. در ادامه همین خط چون ما قرار است که با استفاده از کادر محاوره ای JColorChooser یک رنگ انتخاب کنیم باید ابتدا کادر را نمایش دهیم. این کار را با استفاده از متد استاتیک ()showDialog انجام می دهیم. این متد سه پارامتر می گیرد :

JColorChooser.showDialog(parent,title,color);

پارامتر اول کنترل والد ، پارامتر دوم عنوان کادر محاوره ای و پارامتر سوم رنگ پیشفرضی که هنگام نمایش کادر مشخص می شود ، می باشد. برنامه را اجرا کنید :
JColorChooser-in-java-02
مشاهده می کنید که عنوان پنجره Choose Background Color و در قسمت پیشنمایش هم رنگ پیشفرض سفید می باشد. چون ما هیچ رنگی را از قبل به پس زمینه Panel اختصاص نداده ایم در نتیجه متد ()getBackground که رنگ جاری کنترل را بر می گرداند، رنگ سفید را بر می گرداند. استفاده از این متد یک حسن دارد و آن این است که اگر یک رنگ انتخاب کرده و بر روی دکمه OK کلیک کنید و دوباره کادر را باز کنید ، همان رنگ قبلی را که انتخاب کرده اید به عنوان رنگ پیشفرض کادر به شما نمایش می دهد. حال همین خط 20 را به صورت زیر بنویسید :

Color selectedColor = JColorChooser.showDialog(panel1,"Choose Background Color",Color.RED);

مشاهده می کنید که به خاطر پارامتر سوم بعد از اجرای برنامه و زدن دکمه، رنگ پیشفرض کادر محاوره ای قرمز می باشد :
JColorChooser-in-java-03
حال اگر چندین بار رنگ انتخاب کرده و در هر بار دکمه OK را بزنید و دوباره کادر را باز کنید همیشه رنگ قرمز به شما نمایش داده می شود. در خطوط 25-22 چک می کنیم که اگر رنگی انتخاب شده باشد آن را به پس زمینه Panel اعمال کند. برنامه را اجرا، یک رنگ را انتخاب و بر روی دکمه OK کلیک کنید کنید :
JColorChooser-in-java-05