A magyarul kapható, a Java nyelvet ismertető könyvek meghatározó részénél nem kap szerepet ennek az objektumorientált nyelvnek a gyakorlati alkalmazásának a bemutatása. Ezért ebben a cikkünkben (és a későbbiekben is) inkább erre helyezzük a hangsúlyt.
Először úgy készítünk egy swing-es alkalmazást, hogy nem használjuk fel az öröklést, tehát nem vesszük (örökléssel) elő a JFrame osztály metódusait. De ezeket viszont még is használnunk kell. Mi a megoldás? Példányosítsuk a JFrame osztályt! Indítsuk el a NetBeans-t, válasszuk az új projectkészítésnél a Java alkalmazást és írjuk be a következő kódot.
package javaswing1;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class JavaSwing1 {
JButton jb1;
JButton jb2;
JFrame jfr;
private void Swing1(){
jfr = new JFrame();
jb1 = new JButton("Katt ide");
jb2 = new JButton("Vagy ide");
jfr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfr.setTitle("WebElektronika");
jfr.setSize(350, 250);
jfr.add(jb1);
jfr.add(jb2);
jfr.setVisible(true);
}
public static void main(String[] args) {
JavaSwing1 js = new JavaSwing1();
js.Swing1();
}
}
Ha futtatjuk ezt a programot (1. ábra, "F6" megnyomása), akkor azt tapasztaljuk, hogy a második nyomógomb (jb2) teljesen eltakarja a "jb1"-et. Miért? Hogyan tudjuk ezt elkerülni?
1. ábra Futási eredmény
Az egyik lehetséges megoldás a layout vezérlők alkalmazása. Használhatunk akár FlowLayout-ot, de akár GridLayout vezérlőt is. Egészítsük ki a FlowLayout osztály példányosításával a programunkat (tegyük be a setSize() után), illetve ezt a példányt ezután adjuk át paraméternek a setLayout metódus meghívásával (2. ábra).
2. ábra Layout vezérlő használata
Ha a FlowLayout vezérlőt használjuk, akkor a vezérlők a felrakás sorrendjét követően egymás mellé kerülnek (3. ábra).
3. ábra FlowLayout használata
Használjuk a GridLayout osztályt a FlowLayout helyett, most ennek a példányát adjuk át a setLayout metódusnak az "fl" helyett. Azt tapasztaljuk, hogy a két nyomógomb egymás mellé került (4. ábra).
4. ábra GridLayout használata
Jobb megoldás az, ha a JFrame-t nem példányosítjuk, hanem ebből az osztályból örököltetünk. Nézzük meg a következő példát, amelyben az öröklést használjuk fel. Egyébként a példa abból a szempontból nem szerencsés, hogy a main metódusban a saját osztályt példányosítjuk. Későbbi példáinkban ezt a módszert kerülni fogjuk.
package javaswing2;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class JavaSwing2 extends JFrame{
JButton jb1;
JButton jb2;
JLabel jl1;
JTextField jt1;
public JavaSwing2()
{
super("WebElektornika");
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");
jt1 = new JTextField("Tesztszöveg",20);
add(jb1);
add(jb2);
add(jl1);
add(jt1);
setVisible(true);
}
public static void main(String[] args) {
JavaSwing2 js = new JavaSwing2();
js.show();
}
}
Futtassuk most az alkalmazásunkat az "F6" segítségével (5. ábra).
5.ábra Futási eredmény
A Java-val foglalkozó következő cikkünkben megnézzük azt, amikor a projektünkben egy másik osztály segítségével hozzuk létre a Swing-es ablakunkat.
Továbbá kitérünk arra is, hogy hogyan lehet tetszőlegesen elrendezni a felületünkön a különböző vezérlőket, grafikai elemeket.
Megnézzük ebben a cikkben, hogy hogyan tudunk készíteni egy Java projektet a NetBeans fejlesztőrendszer segítségével. Készítünk egy konzolalkalmazást, amely beolvas és megjelenít egy sztringet.. . . .
Megnézzük most két példán keresztül a UIManager használatát. Az első projektben lekérjük azokat a felületlehetőségeket, amelyeket fel tudunk használni. A második projektben ezeket alkalmazzuk a swing-es megjelenítéskor.. . . .
Megnézzük ebben a cikkben, hogy hogyan tudunk készíteni egy Java projektet a NetBeans fejlesztőrendszer segítségével. Készítünk egy konzolalkalmazást, amely beolvas és megjelenít egy sztringet.. . . .