www.www.zaachi.com »  Blog/Java  »  Java a základy GUI #3

Java a základy GUI #3



V minulém článku jsme si trochu rozšířili vědomosti o základních grafických ovládacích prvcích a nakonec jsme začali základy obsluhy událostí. V tomto navazujícím článku se zaměříme trochu podrobněji na události a ukážeme si jak můžeme volat více tlačítky různé metody a třídy.

 

Reklama

Pokud mě chcete podpořit a jste milovník jedné stopy, navštivte můj projekt: MotoArena.cz

V minulém článku jsme začali události a ukázali jsme si jak vytvořit událost pro jedno tlačítko. To je sice pěkné, ale pro složitější věcí nepoužitelné, protože jsme byli omezeni pouze na jednu událost definovanou v metodě actionPerformed.

V tomto článku si ukážeme Interface ActionListener, pomocí něhož můžeme vytvořit samostatnou událost pro více různých ovládacích prvků.

addActionListener

Velice jednoduchá je metoda addActionListener, která potřebuje implementaci ActionListener a její metody actionPerformed.

Možná to zní složitě, ale je to velice jednoduché.

Zjednodušeně by jsem to mohl napsat takto: vtvoříme si třídu a do ní implementujeme ActionLister, abychom mohli používat addActionListener. Pomocí AddActionListener si potom můžeme přiřadit událost pro jakýkoli objekt.

Pokud vám to stále není jasné, vyzkoušejte si následující příklad:

 
package default_package;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class simpleGUI extends JFrame implements ActionListener{
	
	private Window jDialog1;

	public simpleGUI(){
		super("Window");
		setSize(100, 100); 
		setVisible(true);
		Container cont = new Container();  
		cont = getContentPane();  
		FlowLayout layout = new FlowLayout();  
		cont.setLayout(layout);
		
		JButton submit = new JButton("Run");
		cont.add(submit);
		setContentPane(cont);
		
		submit.addActionListener(
				new java.awt.event.ActionListener(){
		            public void actionPerformed(java.awt.event.ActionEvent evt) {
		            	JOptionPane.showMessageDialog(null,"Kliknuli jste na Run", "Program Run", JOptionPane.INFORMATION_MESSAGE );
		            };
				});
	}

	public void actionPerformed(ActionEvent e) {
	}
	       
}

V příkladu jsme si vytvořili jednoduché okno s jediným tlačítkem Run typu JButton. K tomuto tlačítku jsme přidali pomocí addActionListener událost, která je přímo u něj definována jako vnitřní metodu.

Po kliknutí na toto tlačítko se vytvoří JOptionPane a vytvoří novou INFORMATION_MESSAGE.

Pomocí addActionLister můžeme však bez problémů volat i metody, které jsou již hotové a které jsou ve stejné, nebo popřípadě jiné třídě.

Vyzkoušejme si to.

Nejprve si vytvoříme dvě tlačítka a přidáme k nim události.

 
JButton submit = new JButton("Run");
		cont.add(submit);
		
		//pridani udalosti k prvnimu tlacitku
		submit.addActionListener(new java.awt.event.ActionListener () {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
            	//vola metodu print s parametrem "kliknuli jste na tlacitko";
                print("kliknuli jste na tlačítko");
            }
        });
		
		JButton submit2 = new JButton("About");
		cont.add(submit2);
		//prida udalost na druhe tlacitko
		submit2.addActionListener( new java.awt.event.ActionListener(){
			public void actionPerformed(java.awt.event.ActionEvent evt ){
				//vola se metoda about();
				about();
			}
		});

V prvním tlačítku voláme metodu print, a po kliknutí na druhé tlačítko voláme metodu about.
Nyní si vytvoříme tyto dvě metody:

 
//metoda print vypisuje do konzoly
public void print( String msg ){
	System.out.println( msg );
}

//metoda abou obsahuje novou tridu about a vytvari jeji instanci
public void about( ){
	class window extends JFrame{
		private static final long serialVersionUID = 1L;
		public window(){
			//vytvori nove okno
			super("About");
			setSize(100, 100); 
			setVisible(true);
			//zde mohou byt volany dalsi metody
		}
		
	}
	new window();
}

Je vidět že jako událost můžeme nastavit prakticky cokoli co potřebujeme a to velmi jednoduše.

Pro někoho může být tento článek možná trochu zmatený, ale pokud si příklady několikrát přečtete, tak zjistíte že je to vlastně velice jednoduché.

Jako úkol si můžete například vytvořit okno, v němž bude několik tlačítek, po kliknutí na každé z nich se zavolá jiná metoda, která změní pozadí celého Containeru.

Nápověda: Container si vytvořte jako globální proměnnou, aby jste k ní mohli v ostatních metodách přistupovat. Pozadí potom změníte jednoduše pomocí setBackground.

Své hotové řešení můžete umístit například do komentářů.

V příštím článku se podíváme jak snadno vytvořit menu v naší aplikaci.

 

Mohlo by vás zajímat:

Java a základy GUI#1
Java a základy GUI#2
Java a základy GUI#4

 

 


linkuj topclanky
Komentáře (4)

Autor: Zaachi
Publikováno: 6.1.2008 16:27:14


Mohlo by vás zajímat:
Java a základy GUI
Java a základy GUI #2
Java a základy GUI #4
Java a základy GUI #5 - InternalFrame
TOPLIST.cz
rss coments img img img