Sunday, February 18, 2018

ஜாவாவில் ஸ்விங்க்-ஒரு பார்வை.






Java-ஜாவா-ஒரு அறிமுகம்.

ஜாவா ஒரு இணைய மொழி ஆகும்.
சன் மைக்ரோ சிஸ்டமால் உருவாக்கப் பட்டு இன்று ஆரக்கிள் கார்ப்பரஷனின் கையில் உள்ளது.
இது உருவாக்கப்படுவதற்கு முன்னால் சி,சி++ மிகவும் பிரபலமாக இருந்த சமயம்.நிறைய எலக்ட்ரானிக் சாதனங்கள் கண்டுபிடிக்கப் பட்டன.

இவற்றில் நிரலாக்கம் செய்தால் ஒரு சாதனத்தில் செய்யப்பட்ட நிரலை வேறொரு சாதனத்தில் அப்படியே இயக்க முடிய வில்லை. ஒவ்வொரு சாதனத்திற்கும் ஏற்றாற் போல் நிரல் பெயர்ப்பி(compiler) எழுத வேண்டியிருந்தது. Compiler என்பது விலை உயர்ந்ததாய் இருந்தது.
எனவே ஒரு portable language தேவைப்பட்டது.
மேலும் இரண்டாவது காரணம்
இணையம் கண்டு பிடிக்கப்பட்டது. இணையம் சம்பந்தப்பட்ட பயன்பாடுகக்ள்(applications) உருவாக்குவதற்கு ஒரு மொழி தேவைப்பட்டது.
இந்த இரண்டுமே ஜாவா மொழி கண்டு பிடிக்கப்பட காரணமாகும்.
ஆம் ஜாவா ஒரு portable மொழியாகும்.
இத்ற்கு முன் oak என்று பெயரிடப்பட்டிருந்த இந்த மொழியை உருவாக்கிய
சன் மைக்ரோ சிஸ்டம் சேர்ந்த நிரலாளர்கள் ஜாவா காஃப்பி குடித்துக்
கொண்டே என்ன பெயரிடலாம் என்று யோசித்த போது  காஃப்பியின் பெயரிட்டால் என்று தோன்றியது. இதுவே ஜாவா என்று பெயரிட காரணமாகும்.
Java is a both  compiled and interpreted language.
முதலில் ஜாவா compile செய்யப்ப்ட்டு class file ஆக மாற்றப்படுகின்றது.
பிறகு jvm (java virtual machine) ஆல் இன்டெர்ப்ரெட் செய்ய்ப்பட்டு இயக்கப்படுகின்றது.
ஜாவா ஒரு பொருள் நோக்கு நிரலாக்க மொழியாகும்(object oriented language).
மேலும் ஜாவா ஒரு நவீன மொழியாகும். உயர்தர பிழை கையாளுதல் (exception handling) மற்றும் garbage collection கொன்ண்டுள்ளது. அதாவது garbage collector ஆனது அவ்வப்போது இயங்கி நிரல் ஆக்கிரமித்திருந்த நிணைவகத்தை release செய்கிறது.
ஜாவாவில் pointer கிடையாது. எனவே ஜாவா நிரலால் நம் கணினியில் உள்ள நிணைவத்தை அணுக முடியாது. எனவே hacking போன்றவை தடுக்கப்படுகின்றன.
எனவே ஜாவா ஒரு பாதுகாப்பான மொழி எனப்படுகின்றது(java is a secured language)
மேலும் ஜாவாவில் multiple inheritance கிடையாது.
Awt ஒரு அறிமுகம்.
Abstract Window Toolkit(AWT)
இது கிராபிக்கல் யூசர் இன்டெர்ஃபேஸ் உருவாக்க உதவும் லைப்ரரி கிளாஸ்களின் தொகுப்பாகும். டெக்ஸ்ட் ஃபீல்ட், பட்டன், ஸ்குரோல்பார் போன்ற GUI காம்பனெண்ட்ஸ் உருவாக்க உதவும் கிளாஸ்கள் இவை.
AWT-யால் தரப்படும் டூல்கள் அது எந்த ஆபரேட்டிங் சிஸ்டத்தில் இயக்குகின்றதோ அதை பின் பற்றியே அமையும். இது ஒரு வழியில் பார்த்தால் நண்மையாகுமென்றாலும் ஒரே மாதியான வெளியீடு இல்லாதது ஒரு பிழையாகவே தோன்றும். அதாவது GUI டிசைன் செய்ய்யும் பொழுது ஒரு ஆபரேட்டிங்க் சிஸ்டத்திற்கு செய்த டிசைன் அடுத்த ஆபரேட்டிங்க் சிஸ்டத்தில் வேறு மாதிரி வெளிப்படும்.
Swing என்பது awt-யில் இருந்து எக்ஸ்டெண்ட் செய்யப்பட்ட இன்டெர்ஃபேசஸ் ஆகும். இப்பொழுதெல்லாம் awt ஆனது அரிதாகவே உபயோகப் படுத்தப்படுகின்றது. ஏனெனில் ஸ்விங்க் பிளாட்ஃபார்ம் இண்டிபெண்டென்ட் ஆகும். இங்கு பிளாட்ஃபார்ம் என்பது ஆபரேட்டிங்க் சிஸ்டத்தைக் குறிக்கும்..






AWT Hierarchy


Component class
காம்பனெண்ட் கிளாஸ் என்பது awt-யின் மூல லைப்ரரி கிளாஸ் ஆகும். இது ஒரு அப்ஸ்ட்ராக்ட் கிளாஸ் ஆகும்.ஒரு காம்பனெண்ட் ஆப்ஜெக்ட் ஆனது செலக்ட் செய்யப்பட்டுள்ள டெக்ஸ்டின் பேக்ரவுண்ட் மற்றும் ஃபோர்கிரவுண்ட் கலர் என்னென்ன ஞாபகத்தில் கொள்ளுதல் ஆகும். இது ஒரு விசுவல் ஆப்ஜெக்டின் எல்லா பண்புகளையும் என்கேப்சுலேட் செய்துள்ளது.
குறிப்பு:
(அப்ஸ்ட்ராக்ட் கிளாஸிற்கு ஆப்ஜெக்ட் உருவாக்க முடியாது. ஆனால் அந்த கிளாஸை எக்ஸ்டென்ட் செய்து அந்த கிளாஸிற்கு ஆப்ஜெக்ட் உருவாக்கலாம்.


Container
இது பட்டன்,டெக்ஸ்ஃபீல்ட் போன்ற மற்ற காம்பனெண்டுகளை  கண்டெய்ன் செய்திருக்கும். இது காம்பனெண்ட்ஸ் கிளாஸின் சப் கிளாஸ் ஆகும்.


Panel
இது கண்டெய்னர் கிளாஸின் சப் கிளாஸ் ஆகும். இதுவும் மற்ற காம்பனெண்டுகளை கண்டைன் செய்திருக்கும்.


Window class
இது டாப் லெவெல் விண்டோ ஆகும். விண்டோவிற்கு பார்டரோ அல்லது மெனுபாரோ கிடையாது.


Frame
இது விண்டோவின் சப் கிளாஸ் ஆகும்..இது ரீசைஸ் செய்யக் கூடிய கேன்வாஸைக் கொண்டட்



Creating a Frame
ஃப்ரேம் உருவாக்குதல்:
இரு வழிகளில் ஃப்ரேம் உருவாக்கலாம்.
1.   FRAME என்கின்ற கிளாஸை இன்ஹெரிட் செய்தல்
2.   FRAME கிளாஸிற்கு ஆப்ஜெக்ட் உருவாக்குதல்

சான்று நிரல்-1
package test;
import java.awt.*;


public class Test
{
 Test()
 {
  Frame fm=new Frame();         //Creating a frame.
  Label lb = new Label("welcome by muthu karthikeyan");     //Creating a label
  fm.add(lb);                     //adding label to the frame.
  fm.setSize(300, 300);               //setting frame size.
  fm.setVisible(true);                //set frame visibilty true.
 }
 public static void main(String args[])
 {
  Test ta = new Test();
 }
}




மேலே உள்ள நிரலில் ஃப்ரேம் கிளாஸிற்கு ஆப்ஜெக்ட் உருவாக்கியுள்ளோம்.
சான்று நிரல்-2
package testawt;

import java.awt.*;
import java.awt.event.*;

public class Testawt extends Frame
{
  public Testawt()
 {

  Button btn=new Button("Hello World");
  add(btn);        
  setSize(400, 400);       
  setTitle("Muthu karthikeyan"); 
  setLayout(new FlowLayout());  
  setVisible(true);          

 }

 public static void main (String[] args)
 {
  Testawt ta = new Testawt();  
 }
}




மேலெ உள்ள நிரலில் ஃபரேம் கிளாசை இன்ஹெரிட் செய்துள்ளோம்
ஞாபகத்தில் வைத்துக் கொள்ள வேண்டியவை:
SetSize(int width, int height);
setVisible(true).
மேலே உள்ள இரண்டு வரிகளும் இல்லா விட்டால் ஃப்ரேம் விசிப்பிள்
ஆக இருக்காது
மற்ற காம்பனெண்டுகள் உருவாக்கும் பொழுது அதை add மெத்தட் மூலம் ஃப்ரேமுடன் இணைத்தல் வேண்டும்.
Swing
இது ஒரு ஜாவாஸ்கிரிப்ட் ஃப்ரேம் வொர்க் ஆகும். இதுவும் awt போலவே gui உருவாக்க உதவுகின்றது. எனினும் இது தோற்றத்திற்கு ஜாவாவையே முழுதாக சார்ந்திருக்கின்றது. ஆபரேட்டின் சிஸ்டத்தை அல்ல. எனவே எல்லா பிளாட்ஃபார்மிலும் ஒரு தோற்றத்தில் இருக்கும்.
ஸ்விங் பண்புகள்:
1.   பிளாட்ஃபார்ம் சாராதது.
2.   லைட் வெய்ட் காம்பனெண்ட்
3.   அதிகமான கண்ட்ரோல்கள்.
4.   நமக்கு ஏற்றாற்போல் மாற்றியமைத்துக் கொள்ளலாம்.



JFC என்பது என்ன?
JFC என்பது ஜாவா ஃபவுண்டேசன் கிளாஸ் என்பதன் சுருக்கமாகும். . இது GUI அமைக்கவும் மேலும் ஜாவாவிற்கு கிராப்பிகல் ஃபங்க்சனாலிடியை வழங்கவும் உதவிகின்றது. இதன் ஒரு பகுதியே ஸ்விங் ஆகும்.



AWT and Swing Hierarchy


ஸ்விங்க் கிளாஸ்கள் அறிமுகம்.
JPanel: இது awt-யின் panel போலவே செயற்படுகின்றது. இதன் இயற்கையாகவே ஃப்லோ லேய் அவுட்டை கொண்டிருக்கின்றது. மேலும் இது JComponent கிளாசை நேரடியாக இன்ஹெரிட் செய்கின்றது.
JFrame: இதுவும் awt-யின் ஃப்ரேம் போன்றே செயற்படுகின்றது. ஃபரேமில் ஆட் செய்யப் படும் காம்பனண்ட் அதன் கண்டெண்ட் எனப்படுகின்றது.

JLabel:   இது டெக்ஸ்ட் லேபிள்களை இருவாக்க உதவுகின்றது.
JButton: 
இதை கிளிக் செய்யும் பொழுது கோடிங்க் எக்ஸ்க்யூட் செய்ய உதவும் கண்ட்ரோல் ஆகும்.
JTextField:
 இதில் உள்ளீடு கொடுக்கலாம்.

சான்று நிரல்-3
package first;
import javax.swing.*;  //importing swing package
import java.awt.*;     //importing awt package
public class First
{
 JFrame jf;
 public First() {
 jf = new JFrame("My lesson");       
 JButton btn = new JButton("sayHello");
 jf.add(btn);                    
 jf.setLayout(new FlowLayout());       
 jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
 jf.setSize(400, 400);               
 jf.setVisible(true);           
}
 public static void main(String[] args)
 {
  new First();
 }
}



Creating JFrame window by extending JFrame class
package second;
import javax.swing.*; //importing swing package
import java.awt.*; //importing awt package
public class Second extends JFrame
{
 public Second()
 {
  setTitle("My Lesson");
  JLabel lb = new JLabel("Welcome by Muthu karthikeyan");
  add(lb);             
  setLayout(new FlowLayout());   
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setSize(400, 400);   
  setVisible(true);    
 }
 public static void main(String[] args)
 {
  new Second();
 }
}



Points To Remember
ஞாபகத்தில் கொள்வதற்கு:
1.   Javax.swing மற்றும் java.awt பேக்கேஜ் இரண்டையும் இம்போர்ட் செய்ய வேண்டும்.
Swing Components மற்றும் Containers
காம்பனெண்ட் என்பது Visual control ஆகும். இவை யெல்லாமே JComponent என்கின்ற கிளாசிலிருந்து டெரிவ் செய்யப்பட்டவை. இவை லைட் வெய்ட் காம்பனெண்ட்ஸ் ஆகும்.
  1. Top level Containers
  2. இது AWT  காம்பனெண்ட் மற்றும் கன்டைனர் ஆகிய இரண்டையும் இன்ஹெரிட் செய்கின்றது.
  3. ஹெவி வெய்ட்
  4. JFrame, JDialog மற்றும் JApplet போன்றவை உதாரணமாகும்.
லைட் வெய்ட் கண்டைனர்:
இது JComponent கிளாஸை இன்ஹெரிட் செய்கின்றது.  உதாரணம்:
JPanel.

JButton
இது ஒரு பட்டனின் ஃபங்க்சனாலிட்டியை வழங்குகின்றது. இது மூன்று வகையான கன்ஸ்ட்ரக்டர்களை கொண்டுள்ளது.
உதாரணம்:
JButton(Icon ic)

JButton(String str)

JButton(String str, Icon ic)

மேலும் இது ActionEvent என்பதை ஆதரிக்கின்றது. ஒரு பட்டனை கிளிக் செய்யும் பொழுது ActionEvent ஆனது ஜெனெரேட் ஆகின்றது.


சான்று நிரல்-5:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class testswing extends JFrame
{

 testswing()
 {
  JButton bt1 = new JButton("Yes");        //Creating a Yes Button.
  JButton bt2 = new JButton("No");         //Creating a No Button.
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)     //setting close operation.
  setLayout(new FlowLayout());       //setting layout using FlowLayout object
  setSize(400, 400);                 //setting size of Jframe
  add(bt1);       //adding Yes button to frame.
  add(bt2);       //adding No button to frame.

  setVisible(true);
 }
 public static void main(String[] args)
 {
  new testswing();
 }
}
JTextField:
இது ஒற்றை வரியில் இன்புட் வாங்க பயன்படுகின்றது. இது பரவலாக உபயோகப்படுத்தப்படும் காம்பனெண்ட் ஆகும். இது மூன்று கன்ஸ்ட்ரக்டர்களை கொண்டுள்ளது.
உதாரணம்:
JTextField(int cols)
JTextField(String str, int cols)
JTextField(String str)
இதில் cols என்பது டெக்ஸ்ட் ஃபீல்ட் எவ்வளவு காலம்ன் கொண்டிக்கலாம் என்பதைக் குறிக்கின்றது.
சான்று நிரல்:6
package mytextfield;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class MyTextField extends JFrame
{
 public MyTextField()
 {
  JTextField jtf = new JTextField(20);
  add(jtf);                 
  setLayout(new FlowLayout());
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setSize(400, 400);
  setVisible(true);
 }
 public static void main(String[] args)
 {
  new MyTextField();
 }
}

JCheckBox: இது ஒன்று அல்லது ஒன்றுக்கு மேற்பட்ட ஆப்சனைக் கொண்டிருக்கும்.அதில் இருந்து எத்தணை ஆப்சன் வேண்டுமென்றாலும் தேர்ந்தெடுக்கலாம்.
இதன் கன்ஸ்ட்ரக்டர்:
JCheckBox(String str)


சான்று நிரல்-7:
package test1;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Test1 extends JFrame
{
 public Test1()
 {
  JCheckBox jcb = new JCheckBox("yes"); 
  add(jcb);                   
  jcb = new JCheckBox("no");       
  add(jcb);                   
  jcb = new JCheckBox("maybe");        
  add(jcb);                   
  setLayout(new FlowLayout());
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setSize(400, 400);
  setVisible(true);
 }
 public static void main(String[] args)
 {
  new Test1();
 }
}

JRadioButton:
இந்த கண்ட்ரோலும் ஒன்று அல்லது ஒன்றிற்கு மேற்பட்ட ஆப்சனைக் கொண்டிருக்கும். இதில் ஒரே ஒரு ஆப்சனை மட்டுமே செலெக்ட் செய்யலாம்.
கன்ஸ்ட்ரக்டர் உதாரணம்:
JRadioButton(String str)


சான்று நிரல்-8
package test1;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Test1 extends JFrame
{
 public Test1()
 {
  JRadioButton jcb = new JRadioButton("A");
  add(jcb);                      
  jcb = new JRadioButton("B");            
  add(jcb);                      
  jcb = new JRadioButton("C");            
  add(jcb);                      
  jcb = new JRadioButton("none");
  add(jcb);
  setLayout(new FlowLayout());
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setSize(400, 400);
  setVisible(true);
 }
 public static void main(String[] args)
 {
  new Test1();
 }
}


JComboBox
இது டெக்ஸ்ட் ஃபீல்ட் மற்றும் டிராப்டவுன் லிஸ்டின் காம்பினேசன் ஆகும். கன்ஸ்டரக்டர் உதாரணம்:

JComboBox(String arr[])
சான்று நிரல்-9
package test1;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Test1 extends JFrame
{
 String name[] = {"ravi","raja","bala","hari"}; 
 public Test1()
 {
  JComboBox jc = new JComboBox(name);         
  add(jc);
  setLayout(new FlowLayout());
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setSize(400, 400);
  setVisible(true);
 }
 public static void main(String[] args)
 {
  new Test1();
 }
}




சான்று நிரல்-10
package stcolor;
import java.awt.*;  //importing awt package
import javax.swing.*;  //importing swing package
import java.awt.event.*;  //importing event package

//For an event to occur upon clicking the button, ActionListener interface should be implemented
class Stcolor extends JFrame implements ActionListener{

JFrame frame;
JPanel panel;
JButton b1,b2,b3,b4,b5;

Stcolor(){

   frame = new JFrame("COLORS");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

   panel = new JPanel();  //Creating a panel which is a container and will hold all the buttons
   panel.setSize(100, 50);

   b1 = new JButton("BLUE");  //Creating a button named BLUE
   b1.addActionListener(this);  //Registering the button with the listener

   b2 = new JButton("RED");  //Creating a button named RED
   b2.addActionListener(this);  //Registering the button with the listener

   b3 = new JButton("CYAN");//Creating a button named CYAN
   b3.addActionListener(this);//Registering the button with the listener

   b4 = new JButton("PINK");  //Creating a button named PINK
   b4.addActionListener(this);  //Registering the button with the listener

   b5 = new JButton("MAGENTA");  //Creating a button named MAGENTA
   b5.addActionListener(this);  //Registering the button with the listener

   //Adding buttons to the Panel
   panel.add(b1);
   panel.add(b2);
   panel.add(b3);
   panel.add(b4);
   panel.add(b5);

   frame.getContentPane().add(panel);  //adding panel to the frame
   frame.setSize(500,300);
   frame.setVisible(true);
   frame.setLayout(new FlowLayout());

}
//The below method is called whenever a button is clicked
    @Override
    public void actionPerformed(ActionEvent e) {

     
      
        Object see = e.getSource();

        if(see ==(b1)){
        frame.getContentPane().setBackground(java.awt.Color.blue); 
        }
        if(see == b2){
            frame.getContentPane().setBackground(java.awt.Color.red); 
        }
        if(see == b3){ 
        frame.getContentPane().setBackground(java.awt.Color.cyan);
        }
        if(see == b4){ 
            frame.getContentPane().setBackground(java.awt.Color.pink); 
        }
        if(see == b5){ 
        frame.getContentPane().setBackground(java.awt.Color.magenta);
        }
    }



    public static void main(String[] args) {
        Stcolor o = new Stcolor();
    }

}



மேலே உள்ள நிரலில் மொத்தம் ஐந்து பட்டன்கள் உள்ளன.  ஒவ்வொரு பட்டனை கிளிக் செய்யும் பொழுதும் ஃப்ரேமின் பேக்ரவுண்ட் நிறம் மாறும். ஐந்து பட்டன்களும் ஆட் ஆக்சன் லிசனருடன் சேர்க்கப் பட்டுள்ளது. இதை கிளிக் செய்யும் பொழுது ஆக்சன் பெர்ஃபார்முடு என்ற மெத்தட் கால் ஆகின்றது. அந்த மெத்தடில் எந்த பட்டன் கிளிக் செய்கின்றோமோ அதற்கேற்றாற் போல் ஃப்ரேமின் பிண்ணனி நிறம் மாறும் படி  கோடிங்க் செய்யப்பட்டுள்ளது.
முத்து கார்த்திகேயன்,மதுரை.
ads Udanz

No comments:

Post a Comment