package elte.java2_utikalauz5.gui; /** Egyszerű felhasználói felület faktoriális számító példaprogramunkhoz.

A szövegmezőbe beírt szám faktoriálisa egy gomb megnyomásakor fog megjelenni. @link.forrásfájl {@docRoot}/../data/gui/src FaktorialisGUI.java @link.letöltés {@docRoot}/../data/gui FaktorialisGUI.jar @since Java 2 Útikalauz programozóknak 1.3 */ class FaktorialisGUI implements java.awt.event.ActionListener { /** A kiindulási szám a faktoriális számításhoz. */ private java.awt.TextField szám = //beviteli szövegmező new java.awt.TextField(6); //legalább 6 karakter széles /** Faktoriális számítás eredményét megjelenítő címke. */ private java.awt.Label eredmény = //eredménymegjelenítő cimke létrehozása new java.awt.Label("="); /** GUI-t felépítő konstruktor. @param felület a felhasználói felületet tartalmazó konténer */ private FaktorialisGUI(java.awt.Container felület) { felület.setLayout(new java.awt.FlowLayout()); //komponensek egymás után felület.add(szám); //szövegmező felvétele az ablakba java.awt.Button nyomógomb = new java.awt.Button("!"); //nyomógomb felület.add(nyomógomb); //nyomógomb felvétele az ablakba nyomógomb.addActionListener(this); //nyomógomb megnyomásának figyelése felület.add(eredmény); //eredménymegjelenítő cimke felvétele az ablakba } /** Nyomógomb megnyomásakor a faktoriális kiszámítása. @param esemény A gombnyomást reprezentáló eseményobjektum. */ public void actionPerformed(java.awt.event.ActionEvent esemény) { try { //faktoriális kiszámítása long maxi = Long.parseLong( szám.getText() ); //szám kiolvasása long faktoriális = 1; //faktoriálisszámítás túlcsodulás figyeléssel for (long i = 2; i<=maxi && faktoriális>0; i++) faktoriális *= i; if (faktoriális<=0) throw new Exception("Túlcsordulás!"); eredmény.setText("= "+faktoriális); //eredmény megjelenítése } catch (Exception e) { //hibakezelés eredmény.setText("Hiba: "+e); //hiba megjelenítése } //hogy az eredmény mindig teljesen megjelenjen, eredmény.getParent().validate(); //a felületi elemek újraméreteztetése } /** A grafikus felhasználói felület felépítése. @param felület A felhasználói felületet tartalmazó konténer. @param argumentumok Az indításkor megadott paraméterek. */ public static void felépít(java.awt.Container felület, String argumentumok[]) { new FaktorialisGUI( felület ); //felület felépítése felület.setPreferredSize(new java.awt.Dimension(300, 100)); //kezdőméret } /** A tesztprogram indítása. @param argumentumok Az indításkor megadott paraméterek. */ public static void main(String argumentumok[]) { java.awt.Frame ablak = new AblakTeszt.Ablak("Faktoriális számítás"); felépít( ablak, argumentumok ); //felület felépítése ablak.setVisible(true); //és megjelenítése } }