curs 5 pig_2015

36
Pentru a trata evenimentele ce apar intr-o aplicatie trebuie respectati pasii: Implementarea unei clase derivata dintr-o clasa Listener: Inregistrarea unei instante a clasei precedente pe post de listner pentru o componenta derivata din JComponent: Tratarea evenimentul de apasare pe un buton se va efectua utiliza clasa ActionListener: class ListenerPtButon implements ActionListener { private int numClicks = 0; public void actionPerformed(ActionEvent e) { numClicks++; ((JButton)e.getSource()).setText(“Apasat: + numClicks); } } oComponenta.addActionListener(instanceOfMyClass); public class MyClass implements xxxListener { public void eveniment(xxxEvent e) { ...//tratarea evenimentului... }

Upload: v3ry900d

Post on 03-Feb-2016

234 views

Category:

Documents


0 download

DESCRIPTION

Proiectare

TRANSCRIPT

Page 1: curs 5 pig_2015

Pentru a trata evenimentele ce apar intr-o aplicatie trebuie respectati pasii:

Implementarea unei clase derivata dintr-o clasa Listener:

Inregistrarea unei instante a clasei precedente pe post de listner pentru o componenta derivata din JComponent:

Tratarea evenimentul de apasare pe un buton se va efectua utiliza clasa ActionListener:

class ListenerPtButon implements ActionListener {

private int numClicks = 0;

public void actionPerformed(ActionEvent e){

numClicks++;

((JButton)e.getSource()).setText(“Apasat: “ + numClicks);

}

}

JButton butonulMeu = new JButton(“Apasa: 0”);

butonulMeu. addActionListener(new ListenerPtButon());

oComponenta.addActionListener(instanceOfMyClass);

public class MyClass implements xxxListener {

public void eveniment(xxxEvent e) {

...//tratarea evenimentului... }

}

Page 2: curs 5 pig_2015

//fisier START.java

public class START { public static void main(String[] args) { Desen_aplicatie.Main(); } }import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;class Butoane extends JPanel { JButton b1; JButton b2; public Butoane(){ b1=new JButton("ButonA"); b2=new JButton("ButonB"); this.setLayout(new GridLayout(1,0)); add(b1); add(b2); } }

Page 3: curs 5 pig_2015

class Butoane2 extends JPanel { //JButton b1; public Butoane2(){ JButton b1=new JButton(new ImageIcon("Butoane/buton2.png")); this.setLayout(new GridLayout(1,0)); add(b1); } }

class CheckBoxuri extends JPanel{ JCheckBox cb1; JCheckBox cb2; JCheckBox cb3;

public CheckBoxuri(){ cb1=new JCheckBox("Optiune1"); cb1.setSelected(true); cb2=new JCheckBox("Optiune2"); cb2.setSelected(true); cb3=new JCheckBox("Optiune3"); cb3.setSelected(true); this.setLayout(new GridLayout(0,1)); add(cb1); add(cb2); add(cb3); }}

class CheckBoxuri2 extends JPanel{

Page 4: curs 5 pig_2015

JCheckBox cb1; JCheckBox cb2; JCheckBox cb3;

public CheckBoxuri2(){ cb1=new JCheckBox("Optiune4"); cb1.setSelected(true); cb2=new JCheckBox("Optiune5"); cb2.setSelected(true); cb3=new JCheckBox("Optiune6"); cb3.setSelected(true); this.setLayout(new GridLayout(0,1)); add(cb1); add(cb2); add(cb3); }}

class ButoaneRadio extends JPanel{ JRadioButton buttonAlb; JRadioButton buttonRosu; JRadioButton buttonVerde; public ButoaneRadio(){ buttonAlb=new JRadioButton("Alb"); buttonAlb.setSelected(true); buttonRosu=new JRadioButton("Rosu"); buttonRosu.setSelected(true); buttonVerde=new JRadioButton("Verde"); buttonVerde.setSelected(true); ButtonGroup group =new ButtonGroup();

Page 5: curs 5 pig_2015

group.add(buttonAlb); group.add(buttonRosu); group.add(buttonVerde); this.setLayout(new GridLayout(0,1)); add(buttonAlb); add(buttonRosu); add(buttonVerde); }}

class Tabel extends JPanel{ public Tabel(){ String[] columns={"Nr crt","Nume student","N1","N2","N3","N4","N5","N6" }; Object[][] data={ { "1","Popescu Ion",10.00, 10.00, 10.00, 10.00, 10.00, 10.00}, { "1","Popescu Ion",8, 7, 6, 7, 7, 8} }; JTable table= new JTable(data,columns); JScrollPane scrollPane=new JScrollPane(table); table.setFillsViewportHeight(true); JLabel lblHeading=new JLabel("Eticheta"); lblHeading.setFont(new Font("Arial",Font.TRUETYPE_FONT,24)); add(lblHeading,BorderLayout.PAGE_START); add(scrollPane,BorderLayout.CENTER); }

}

Page 6: curs 5 pig_2015

public class Desen_aplicatie extends JFrame{ public static void Main(){ Desen_aplicatie app=new Desen_aplicatie(); Butoane panouButoane=new Butoane();// Tabel addTabel=new Tabel(); CheckBoxuri panouCheckboxuri=new CheckBoxuri(); ButoaneRadio panouButoaneRadio=new ButoaneRadio(); CheckBoxuri2 panouCheckboxuri2=new CheckBoxuri2(); Butoane2 panouButoane2=new Butoane2();// panouButoane.b1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ if(panouCheckboxuri.cb1.isSelected()){ panouCheckboxuri.cb1.setSelected(false); } else{ panouCheckboxuri.cb1.setSelected(true); } if(panouCheckboxuri.cb2.isSelected()){ panouCheckboxuri.cb2.setSelected(false); } else{ panouCheckboxuri.cb2.setSelected(true); } if(panouCheckboxuri.cb3.isSelected()){ panouCheckboxuri.cb3.setSelected(false); } else{ panouCheckboxuri.cb3.setSelected(true); } } }); panouButoane.b2.addActionListener(new ActionListener(){

Page 7: curs 5 pig_2015

public void actionPerformed(ActionEvent ae){ if(panouButoaneRadio.buttonAlb.isSelected()){ panouButoaneRadio.buttonRosu.setSelected(true); } else if(panouButoaneRadio.buttonRosu.isSelected()){panouButoaneRadio.buttonVerde.setSelected(true); } else if(panouButoaneRadio.buttonVerde.isSelected()){ panouButoaneRadio.buttonAlb.setSelected(true); } } });

Page 8: curs 5 pig_2015

panouButoane2.b1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ String str="Optiunile selectate: "; if(panouCheckboxuri2.cb1.isSelected()){ str=str+ panouCheckboxuri2.cb1.getText()+" "; } if(panouCheckboxuri2.cb2.isSelected()){ str=str+ panouCheckboxuri2.cb2.getText()+" "; } if(panouCheckboxuri2.cb3.isSelected()){ str=str+ panouCheckboxuri2.cb3.getText()+" "; } JOptionPane.showMessageDialog(null, str, "", JOptionPane.INFORMATION_MESSAGE); } }); JPanel panou=new JPanel(); panou.add(addTabel); panou.add(panouButoane); panou.add(panouCheckboxuri); panou.add(panouButoaneRadio); panou.add(panouCheckboxuri2); panou.add(panouButoane2); panou.setBorder(BorderFactory.createEmptyBorder(20,20,20,20)); app.getContentPane().add(panou);

Page 9: curs 5 pig_2015

app.setTitle("Aplicatie compleaza"); app.setSize(1000,600); app.setVisible(true); }}

Exemplu 2

import javax.swing.*;

public class absolt_c2 extends JFrame{ public absolt_c2() { init(); }

private void init() { setSize(400,400);

Page 10: curs 5 pig_2015

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel panel=new JPanel (null); JTextField textField=new JTextField(60); textField.setBounds(50,50,100,50); JTextField textField2=new JTextField(60); textField2.setBounds(160,50,100,50); JTextField textField3=new JTextField(60); textField3.setBounds(270,50,100,50); JButton button=new JButton("Buton1"); button.setBounds(50,100,100,50); JButton button2=new JButton("Buton2"); button2.setBounds(160,100,100,50);

JButton button3=new JButton("Buton2"); button3.setBounds(270,100,100,50);

JCheckBox checkBox=new JCheckBox("check!"); checkBox.setBounds(50,250,100,100); // aici se adauga elementele pe panel panel.add(textField); panel.add(textField2); panel.add(textField3); panel.add(button); panel.add(button2); panel.add(button3);

Page 11: curs 5 pig_2015

panel.add(checkBox);

setContentPane(panel); } public static void main(String[] args) { new absolt_c2().setVisible(true); }}

JOptionPane contine urmatoarele metode după cum urmează:

showMessageDialog () care este folosit pentru a afişa un mesaj simplu.

showInputDialog () care este folosita pentru a afişa un prompt. Această metodă returnează o valoare şir care este scris de utilizator.

showConfirmDialog () care solicită ghidul de confirmare (Yes/ No), prin afişarea mesajului. Această metodă returnează o valoare numerică fie 0 sau 1. Dacă faceţi clic pe butonul "Yes", apoi metoda returneaza 1 altfel 0

Exemplu 3import java.awt.*;import javax.swing.*;import java.awt.event.*;

public class Dialog_d2 { public static void main(String[] args){ JFrame frame = new JFrame("Input Dialog Box Frame"); JButton button = new JButton("Show Input Dialog Box");

Page 12: curs 5 pig_2015

button.setBounds(20,100,170,50); JButton button2 = new JButton("Show Input Dialog Box2"); button2.setBounds(210,100,170,50); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) {String str = JOptionPane.showInputDialog(null, "Enter some text: ","diverse",1); if (str != null) JOptionPane.showMessageDialog(null, "You entered the text: " + str,"diverse",1); else JOptionPane.showMessageDialog(null, "You pressed cancel button","diverse",1); } }); button2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent ae) { String str = JOptionPane.showInputDialog(null, "Introduceti primul text: ","diverse",1); String str2 = JOptionPane.showInputDialog(null, "Introduceti al 2lea text: ","diverse2",1); if ((str != null)&&(str2 != null)) JOptionPane.showMessageDialog(null, "You entered the text: " + str + " - " + str2,"diverse",1); else JOptionPane.showMessageDialog(null, "You pressed cancel button","diverse",1); } });

Page 13: curs 5 pig_2015

JPanel panel = new JPanel(null);

panel.add(button); panel.add(button2); frame.add(panel); frame.setSize(400,200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); frame.setTitle("Exemplu meu"); }

}

Construirea unei fereastra principale a aplicaţiilor tip desktop cu meniuri SwingDe regulă, ferestrele principale ale aplicaţiilor desktop reprezintă calea esenţială pentru accesul la funcţiile principale ale aplicaţiei. De regulă acest lucru realizat printr-un meniu însoţit, eventual, şi de o bară de instrumente.

Majoritatea obiectelor grafice sunt subclase ale clasei Component,

clasa care defineşte generic o componentă grafică şi care poate

interacţiona cu utilizatorul. Singura excepţie o constituie meniurile care

descind din clasa MenuComponent.

Toate componentele Swing sunt reprezentate de clase si definite în

pachetul javax.swing. Următorul tabel arata numele claselor pentru

componentele Swing (inclusiv cele folosite ca si container).

JApplet JButton JCheckBox JCheckBoxMenuItem

Page 14: curs 5 pig_2015

JColorChoose

r

JComboBox JComponent JDesktopPane

JDialog JEditorPane JFileChooser JFormattedTextField

JFrame JInternalFram

e

JLabel JLayer

JLayeredPane JList JMenu JMenuBar

JMenuItem JOPtionPane JPanel JPasswordField

JPopupMenu JProgressBar JRadioButto

n

JRadioButtonMenuIte

m

JRootPane JScroolBar JScroolPane JSeparator

JSlider JSpinner JSplitPane JTabbedPane

JTable JTextArea JTextField JTextPane

JTogglebutton JToolBar JToolTip JTree

JViewport JWindow

Page 15: curs 5 pig_2015

Crearea meniurilor

Modelul orientat obiect al meniurilor în Swing are următoarele caracteristici:

- bară principală reprezintă o instanţă a clasei JMenuBar, sau, pentru meniurile contextuale, JPopUpMenu;

- meniurile accesebile din bara principală sunt obţinute din clasa JMenu;

- elementele individuale ale unui menu (instanţă JMenu) sunt construite pe baza clasei JMenuItem care are următoarele subclase: JCheckBoxMenuItem, JRadioButtonMenuItem şi JMenu. Prin urmare un element individual dintr-un meniu poate fi, la rândul său, un al submenu (instanţă JMenu);

Ca urmare definiţia celui mai simplu meniu ar putea fi următoarea:

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class MainMenuBar extends JMenuBar{

JFrame frmParent;

public MainMenuBar() {

JMenu fileMenu = new JMenu("File");

JMenu editMenu = new JMenu("Edit");

JMenu quitMenu = new JMenu("Quit");

// Meniul File: Open, Save, Close

JMenuItem openItem = new JMenuItem("Open");

JMenuItem saveItem = new JMenuItem("Save");

JMenuItem closeItem = new JMenuItem("Close");

Page 16: curs 5 pig_2015

//Meniul Edit: Cut, Copy, Paste, Find (Find, Replace)

JMenuItem cutItem = new JMenuItem("Cut");

JMenuItem copyItem = new JMenuItem("Copy");

JMenuItem pasteItem = new JMenuItem("Paste");

JSeparator separator1 = new JSeparator();

JMenu findMenu = new JMenu("Find");

JMenuItem findItem = new JMenuItem("Find");

JMenuItem replaceItem = new JMenuItem("Replace");

//Meniul Quit

JMenuItem exitItem = new JMenuItem("Exit");

JMenuItem aboutItem = new JMenuItem("About");

fileMenu.add(openItem);

fileMenu.add(saveItem);

fileMenu.add(closeItem);

editMenu.add(cutItem);

editMenu.add(copyItem);

editMenu.add(pasteItem);

editMenu.add(separator1);

findMenu.add(findItem);

findMenu.add(replaceItem);

editMenu.add(findMenu);

editMenu.add(new JCheckBox("Bifa"));

quitMenu.add(exitItem);

quitMenu.add(aboutItem);

Page 17: curs 5 pig_2015

add(fileMenu);

add(editMenu);

add(quitMenu);

}

}

Pentru a dispune un meniu într-un formular, avem nevoie de o instanţă JFrame pentru bara de meniu, stabilită prin metoda setJMenuBar(). De exemplu clasa principala este:

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class FormMain extends JFrame{

public FormMain() {

this.setJMenuBar(new MainMenuBar());

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setSize(500, 500);

this.setVisible(true);

}

public static void main(String[] args) {

new FormMain();

}

}

va avea la runtime următorul rezultat:

Page 18: curs 5 pig_2015
Page 19: curs 5 pig_2015

Varianta 2

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

class MainMenuBar_1 extends JMenuBar{

JFrame frmParent;

public MainMenuBar_1() {

JMenu fileMenu = new JMenu("File");

JMenu editMenu = new JMenu("Edit");

JMenu quitMenu = new JMenu("Quit");

// Meniul File: Open, Save, Close

JMenuItem openItem = new JMenuItem("Open");

JMenuItem saveItem = new JMenuItem("Save");

JMenuItem closeItem = new JMenuItem("Close");

//Meniul Edit: Cut, Copy, Paste, Find (Find, Replace)

JMenuItem cutItem = new JMenuItem("Cut");

JMenuItem copyItem = new JMenuItem("Copy");

JMenuItem pasteItem = new JMenuItem("Paste");

JSeparator separator1 = new JSeparator();

JMenu findMenu = new JMenu("Find");

JMenuItem findItem = new JMenuItem("Find");

JMenuItem replaceItem = new JMenuItem("Replace");

Page 20: curs 5 pig_2015

//Meniul Quit

JMenuItem exitItem = new JMenuItem("Exit");

JMenuItem aboutItem = new JMenuItem("About");

//se adauga Item la un JMenu

fileMenu.add(openItem);

fileMenu.add(saveItem);

fileMenu.add(closeItem);

editMenu.add(cutItem);

editMenu.add(copyItem);

editMenu.add(pasteItem);

editMenu.add(separator1);

findMenu.add(findItem);

findMenu.add(replaceItem);

editMenu.add(findMenu);

editMenu.add(new JCheckBox("Bifa"));

quitMenu.add(exitItem);

quitMenu.add(aboutItem);

//se adauga JMenu la interfata

add(fileMenu);

add(editMenu);

add(quitMenu);

} }

Page 21: curs 5 pig_2015

public class Meniuri extends JFrame{

public Meniuri() {

this.setJMenuBar(new MainMenuBar_1());

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setSize(500, 500);

this.setVisible(true);

}

public static void main(String[] args) {

new Meniuri();

} }

Page 22: curs 5 pig_2015

O parte din clasele pentru evenimetele Java

Evenimentele generate de componente sunt preluate şi tratate de obiecte specifice care trebuie să se conformeze anumitor interfeţe. În Java sunt definite interfeţe pentru fiecare categorie de evenimente, iar obiectele “co-interesate” în tratarea lor trebuie, prin urmare, să implementeze aceste interfeţe, adică sunt obligate să deţină metodele care vor fi apelate la apariţia respectivelor evenimente.

Page 23: curs 5 pig_2015

Interfaţa EventListener si extensiile sale

putem deduce că:

- un obiect sursă de evenimente (o componentă) are nevoie de un obiect care să îi recepţioneze şi să-i trateze evenimentele, obiect desemnat printr-o metodă specifică cum ar fi addActionListener pentru evenimente din categoria ActionEvent, sau alte metode specifice (AddAncestorListener(AncestorListener), addComponentListener(ComponentListener), addFocusListener(FocusListener), addItemListener(ItemListener), addKeyListener(KeyListener), addMouseListener(MouseListener)) pentru alte tipuri de evenimente;

Page 24: curs 5 pig_2015

- obiectul receptor trebuie să implementeze o interfaţă specifică cum ar fi ActionListener specifică obiectelor pe care le poate recepţiona – ActionEvent, instanţă care presupune implementarea unei metode care va fi de fapt apelată la producerea respectivului eveniment – actionPerformed.

Modul în care colaborează obiectele implicate în exemplul de mai sus poate fi redat astfel:

Colaborare bazată pe evenimente

Am menţionat, la un moment dat, că închiderea frame-urilor afişate nu implică automat şi încheirea execuţiei procesului respectiv. Încheirea execuţiei unui process se poate realiza prin invocarea metodei System.exit(). Când însă ar trebui executată această metodă ? Răspunsul logic ar fi la închiderea ferestrei.. Evenimentele specifice ferestrelor vor fi preluate de obiecte ce corespund interfeţei WindowListener.

Această interfaţă este ceva mai complicată decât ActionListener pentru că presupune mai multe metode:

public void windowActivated(WindowEvent event)Invocată atunci când fereastra respectivă va prelua controlul şi va recepţiona acţiunile utilizatorului de la tastatură.

public void windowClosing(WindowEvent event)Invocată atunci când utilizatorul încearcă în mod explicit închiderea ferestrei.

public void windowClosed(WindowEvent event)Invocată în momentul în care fereastra a fost închisă.

public void windowDeactivated(WindowEvent event)Invocată atunci când fereastra nu mai este fereastra activă, adică nu va mai recepţiona evenimentele determinate de acţiunile de la tastatură.

public void windowIconified(WindowEvent event)Invocată atunci când fereastra este minimizată.

public void windowDeiconified(WindowEvent event)Invocată atunci când fereastra este restaurată la forma normală.

public void windowOpened(WindowEvent event)Invocată prima dată când fereastra devine vizibilă.

Page 25: curs 5 pig_2015

Prin urmare dacă JFrame-ul Intermitent îşi va înregistra prin metoda addWindowListener(WindowListener) un obiect care va recepţiona evenimentele specifice ferestrelor şi care va fi obligat astfel să respecte interfaţa WindowListener, atunci instrucţiunea cu pricina ar trebui specificată în metoda windowClosing(WindowEvent). Programul iniţial modificându-se astfel:

http://docs.oracle.com/javase/7/docs/api/java/awt/event/WindowAdapter.html

Class WindowAdapter

java.lang.Object o java.awt.event.WindowAdapter

All Implemented Interfaces:WindowFocusListener, WindowListener, WindowStateListener, EventListener

Direct Known Subclasses:

BasicToolBarUI.FrameListener, JMenu.WinListener

public abstract class WindowAdapterextends Objectimplements WindowListener, WindowStateListener, WindowFocusListener

An abstract adapter class for receiving window events. The methods in this class are

empty. This class exists as convenience for creating listener objects.

Extend this class to create a WindowEvent listener and override the methods for the events of interest. (If you implement the WindowListener interface, you have to define all of the methods in it. This abstract class defines null methods for them all, so you can only have to define methods for events you care about.)

Create a listener object using the extended class and then register it with a Window using the window's addWindowListener method. When the window's status changes by virtue of being opened, closed, activated or deactivated, iconified or deiconified, the relevant method in the listener object is invoked, and the WindowEvent is passed to it.

WindowEvent, WindowListener, Tutorial: Writing a Window Listener

o Constructor Summary

Page 26: curs 5 pig_2015

Constructors

Constructor and Description

WindowAdapter()

o Method Summary

Methods

Modifier and Type

Method and Description

voidwindowActivated(WindowEvent e)

Invoked when a window is activated.

voidwindowClosed(WindowEvent e)

Invoked when a window has been closed.

voidwindowClosing(WindowEvent e)

Invoked when a window is in the process of being closed.

voidwindowDeactivated(WindowEvent e)

Invoked when a window is de-activated.

voidwindowDeiconified(WindowEvent e)

Invoked when a window is de-iconified.

void

windowGainedFocus(WindowEvent e)

Invoked when the Window is set to be the focused Window, which means that the Window, or one of its subcomponents, will receive keyboard events.

voidwindowIconified(WindowEvent e)

Invoked when a window is iconified.

void

windowLostFocus(WindowEvent e)

Invoked when the Window is no longer the focused Window, which means that keyboard events will no longer be delivered to the Window or any of its subcomponents.

voidwindowOpened(WindowEvent e)

Invoked when a window has been opened.

void windowStateChanged(WindowEvent e)

Page 27: curs 5 pig_2015

Invoked when a window state is changed.

Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

o Constructor Detail

WindowAdapter

public WindowAdapter()

o Method Detail

windowOpened

public void windowOpened(WindowEvent e)

Invoked when a window has been opened.

Specified by:

windowOpened in interface WindowListener

windowClosing

public void windowClosing(WindowEvent e)

Invoked when a window is in the process of being closed. The close operation can be overridden at this point.

Specified by:

windowClosing in interface WindowListener

windowClosed

public void windowClosed(WindowEvent e)

Invoked when a window has been closed.

Specified by:

windowClosed in interface WindowListener

windowIconified

Page 28: curs 5 pig_2015

public void windowIconified(WindowEvent e)

Invoked when a window is iconified.

Specified by:

windowIconified in interface WindowListener

See Also:

Frame.setIconImage(java.awt.Image)

windowDeiconified

public void windowDeiconified(WindowEvent e)

Invoked when a window is de-iconified.

Specified by:

windowDeiconified in interface WindowListener

windowActivated

public void windowActivated(WindowEvent e)

Invoked when a window is activated.

Specified by:

windowActivated in interface WindowListener

windowDeactivated

public void windowDeactivated(WindowEvent e)

Invoked when a window is de-activated.

Specified by:

windowDeactivated in interface WindowListener

windowStateChanged

public void windowStateChanged(WindowEvent e)

Invoked when a window state is changed.

Specified by:

windowStateChanged in interface WindowStateListener

windowGainedFocus

Page 29: curs 5 pig_2015

public void windowGainedFocus(WindowEvent e)

Invoked when the Window is set to be the focused Window, which means that the Window, or one of its subcomponents, will receive keyboard events.

Specified by:

windowGainedFocus in interface WindowFocusListener

windowLostFocus

public void windowLostFocus(WindowEvent e)

Invoked when the Window is no longer the focused Window, which means that keyboard events will no longer be delivered to the Window or any of its subcomponents.

Specified by: windowLostFocus in interface WindowFocusListener