Programe qe drejtohen nga ngjarjet

 

Nje ngjarje ndodh kur perdoruesi kryen nje veprim, si psh kur klikon nje buton. Ne nje program te drejtuar nga ngjarjet perdoruesi mund te nderrmare nje numer ngjarjesh ne nje rend te caktuar.

Komponenti nga i cili gjenerohet ngjarja quhet burim i ngjarjes (source)

Kompnenti i cili interesohet per ngjarjen quhet degjues i ngjarjes (listener)

Per t’ju pergjigjur ngjarjeve te perdoruesit brenda klases duhet:

1. Pergatitja e klases per te pranuar mesazhet e ngjarjes.

import java.awt.event.*;

shtohet implements ActionListener ne koken e klases.

ActionListener eshte nje nderfaqe – nje klases qe permban nje bashkesi specifikimesh per metodat qe ju mund te perdorni.

 2. Te njoftosh klasen qe te presi ngjarjet qe do kryhen.

Perdoret metoda  addActionListener() per degjuesin e ngjarjeve ne JButton, JTextfield, JCheckBox, JComboBox, JRadioButton.

 3. Ti thuash klases si t’i pergjigjet ngjarjeve

Nderfaqja ActionListener mban metoden actionPerformed (ActionEvent e)


     // Shembull

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class JHelloFrame extends JFrame implements ActionListener

{

JLabel question = new JLabel("What is your name?");

Font bigFont = new Font("Arial", Font.BOLD, 16);

JTextField answer = new JTextField(10);

JButton pressMe = new JButton("Press me");

JLabel greeting = new JLabel("");

final int WIDTH = 175;

final int HEIGHT = 225;

public JHelloFrame()

{

super("Hello Frame");

setSize(WIDTH, HEIGHT);

setLayout(new FlowLayout());

question.setFont(bigFont);

greeting.setFont(bigFont);

add(question);

add(answer);

add(pressMe);

add(greeting);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

pressMe.addActionListener(this);

}

public void actionPerformed(ActionEvent e)

{

String name = answer.getText();

String greet = "Hello, " + name;

greeting.setText(greet);

}}

public class JHelloDemo

{

public static void main(String[] args)

{

JHelloFrame frame = new JHelloFrame();

frame.setVisible(true);

}

}

Nese kemi komponente te ndyshem qe gjeneruan ngjarjen, p.sh edhe kur klikojme mbi JButton, edhe kur shtypim enter ne nje JTextField thirret nga secili komponent metoda addActionListener:

 

butoni.addActionListener(this);

teksti.addActionListener(this);

 

Nese duhet te ndodhin veprime te ndryshme nese perdoruesi klikon mbi buton ose shtyp enter ne nje JtextField duhet percaktuar burimi i ngjarjes brenda metodes actionPerformed(ActionEvent e)

Object source = e.getSource();

 

public void actionPerformed(ActionEvent e)

{

Object source = e.getSource();

if(source == butoni)

//veprime qe duket te kryhen kur shtypet butoni

else

//veprime qe duket te kryhen kur shtypet nje komponent tjeter

}

 

 


     Shembull:

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class DyButona extends JFrame implements ActionListener

{

Font f1 = new Font("Arial", Font.BOLD, 16);

JButton b1 = new JButton("butoni 1");

JButton b2 = new JButton("butoni 2");

JLabel l2 = new JLabel("");

final int WIDTH = 250;

final int HEIGHT = 200;

public DyButona()

{

super("Hello Frame");

setSize(WIDTH, HEIGHT);

setLayout(new FlowLayout());

b1.setFont(f1);

b2.setFont(f1);

add(b1);

add(b2);

add(l2);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

b1.addActionListener(this);

b2.addActionListener(this);

}

public void actionPerformed(ActionEvent e)

{

Object source = e.getSource();

if(source ==b1)

                l2.setText("Ngjarja u gjenerua nga butoni 1");

else

                l2.setText("Ngjarja u gjenerua nga butoni 2");

}

public static void main(String[] args)

{

DyButona frame = new DyButona();

frame.setVisible(true);

}

}

Mund te perdorni fjalenkyce instanceof per te percaktuar burimin e ngjarjes, nese duhet vetem tipi i komponentit dhe jo komponenti qe gjeneroi ngjarjen.

void actionPerformed(ActionEvent e)

{

Object source = e.getSource();

if(source instanceof JTextField)

{

// execute these statements when any JTextField

// generates the event

// but not when a JButton or other Component does

}

}


     Shembull:

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class EventInstanceOf extends JFrame implements ActionListener

{

JLabel l1 = new JLabel("Shkruaj ne nje nga fushat dhe jep enter:");

Font f1 = new Font("Arial", Font.BOLD, 16);

JTextField t1 = new JTextField("teksti1",7);

JTextField t2 = new JTextField("teksti2",7);

JButton b1 = new JButton("butoni 1");

JButton b2 = new JButton("butoni 2");

JLabel l2 = new JLabel("");

final int WIDTH = 250;

final int HEIGHT = 200;

public EventInstanceOf()

{

super("Hello Frame");

setSize(WIDTH, HEIGHT);

setLayout(new FlowLayout());

b1.setFont(f1);

b2.setFont(f1);

add(l1);

add(t1);

add(t2);

add(b1);

add(b2);

add(l2);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

t1.addActionListener(this);

t2.addActionListener(this);

b1.addActionListener(this);

b2.addActionListener(this);

}

public void actionPerformed(ActionEvent e)

{

Object source = e.getSource();

if(source instanceof JTextField)

{

                l2.setText("Ngjarja u gjenerua nga JTextField");

}

else if(source instanceof JButton)

{

                l2.setText("Ngjarja u gjenerua nga butoni");

}

}

public static void main(String[] args)

{

EventInstanceOf frame = new EventInstanceOf();

frame.setVisible(true);

}

}