WebElektronika

Swing alkalmazás készítése II.

person access_time 2014.03.31.
Folytatjuk a Swing-es alkalmazások készítését, két kisebb projektet valósítunk meg. A második alkalmazásban egyénileg rendezzük el a vezérlőket a grafikus felületen.


Korábbi cikkünkben elkezdtük megnézni a Swing alkalmazások készítésének a lehetőségeit. Folytatjuk most ennek a témakörnek a gyakorlati szintű megismerését. Ennek a cikkünknek az első részben megnézzük azt a lehetőséget, amikor a grafikus megjelenítésért egy külön osztály felel.
Azután elhagyva a layoutvezérlőket, mi fogjuk egyénileg elrendezni a GUI-kat.
 

Nem egyedi elrendezés

Hozzunk létre egy új java alkalmazást, a neve legyen javaswing3. Adjunk hozzá a projektünkhöz egy újabb osztályt, amelynek a neve : ablak.java.

Látható, hogy a main metódusban példányosítjuk ezt az osztályt, illetve meghívjuk annak (?) show() metódusát. De láttuk a korábbi cikkünkben, hogy ez a show() metódus nem az ablak osztályunké, hanem ezt (is) örököltetjük a JFrame osztályból.

package javaswing3;

public class JavaSwing3 {

    public static void main(String[] args) {
        
        ablak ab1 = new ablak();
        ab1.show();
    }
}

package javaswing3;

import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSlider;

public class ablak extends JFrame{
    
    JButton jb1;
    JButton jb2;
    JLabel jl1;
    JSlider js1;
    
    public ablak()
    {
        super("WebElektronika");
        setSize(350, 250);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        FlowLayout fl = new FlowLayout();
        setLayout(fl);
        jb1 = new JButton("Katt ide");
        jb2 = new JButton("Új példa");
        jl1 = new JLabel("webelektronika.com");
        js1 = new JSlider();
        add(jb1);
        add(jb2);
        add(jl1);
        add(js1);
        setVisible(true);
    }

}


Írjuk be a kódokat, majd futtassuk azt az F6 megnyomásával. A main() metódus elindul, az ablak osztályunk példányosításra kerül (1. ábra).


1. ábra   A futási eredmény
 

Az "ablak" osztály konstruktorában hívjuk meg a szülőosztály konstruktorát (super), amelynek segítségével írjuk ki az ablakunk fejlécére a "WebElektronika" nevet. Azután beállítjuk az ablakunk méretét, majd azt, hogy az ablak bezárásakor a programunk érjen véget ("setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)").

Az "add()" metódusok segítségével "felpakoljuk" a swing felületünkre a különböző vezérlőket, amelyeket a JButton, JLabel és a JSlider osztályokból példányosítottunk.

A main() metódusban példányosítjuk az "ablak" osztályt, és a show() metódus segítségével a swing-es ablakunkak megjelenítjük

package javaswing4;

public class JavaSwing4 {

    public static void main(String[] args) {
        
        ablak ab1 = new ablak();
        ab1.show();
        
    }
}


Egyedi elrendezés

Megnézzük ebben a részben azt a megoldást, amelynek segítségével a layoutvezérlők (pl.: FlowLayout) elhagyhatók, tehát mi fogjuk pozícionálni az adott vezérlőket.

Készítsünk egy újabb projektet, legyen a neve : javaswing4.
Szintén adjunk ehhez a projekthez is egy újabb osztályt, amelynek a neve : "ablak".

package javaswing4;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class ablak extends JFrame{

    JButton jb1, jb2, jb3;
    JLabel jl1;
    JPanel jpan;
        
    public ablak(){
        super("WebElektronika");
        setSize(350,250);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
        jb1 = new JButton("első");
        jb2 = new JButton("második");
        jb3 = new JButton("Katt ide!");
        jl1 = new JLabel("webelekronika.com, 2014.");
    
        jpan = new JPanel();
        jpan.setLayout(null);
        jb1.setBounds(20, 30, 100, 40);
        jb2.setBounds(20, 80, 100, 40);
        jb3.setBounds(140, 30, 100, 120);
        jl1.setBounds(50, 160, 150, 20);
        jpan.add(jb1);
        jpan.add(jb2);
        jpan.add(jb3);
        jpan.add(jl1);
        add(jpan);
        
        setVisible(true);
    }
}

A JPanel osztály példányosítása után erre az objektumra (jpan) fogunk "rápakolni" (jpan.add()) nyomógombokat (jb1, jb2, jb3) és egy címkét (jl1).
A setBounds() metódus paraméterlistájában először az X, Y koordinátákat, majd az adott vezérlők hosszúságát, szélességét adjuk meg.
Ezután a JPanel példányát tesszük rá a swing-es felületünkre. 

A main() metódus megegyezik a korábbi projektünk (javaswing3) metódusával. Az "ablak" osztály példányosítása után a show() metódus meghívásával az ablakunk megjelenik (2. ábra). .


2. ábra   A futási eredmény