Skip navigation

A könyvfelvitelre szolgáló űrlap

A KonyvFelviteliUrlap osztály

Ezt az osztályt egy JDialog osztályból származtatjuk. Az osztályon belül a könyvek felvivendő adatainak egy-egy beviteli mezőt hozunk létre (erre Java-ban a JTextField osztály használható). Ezen kívül létrehozunk egy gombot is, amelyre rákattintva felvisszük majd az új adatokat az adatbázisba. A grafikus felület elrendezésére különbőző elrendezést alkalmazunk a párbeszédablakon belül (BorderLayout) és a beviteli mezők részére (GridLayout). A grafikus elemeket privát adattagként tüntetjük fel az osztályban. 

public class KonyvFelvitelUrlap extends JDialog implements ActionListener {
    
    private JTextField tf_konyvszamMezo;
    private JTextField tf_szerzoMezo;
    private JTextField tf_cimMezo;
    private JTextField tf_kiadoMezo;
    private JTextField tf_evMezo;
    
    private JPanel panel_foPanel;
    private JPanel panel_inputPanel;
    private JButton button_felviszGomb;
    ...

}

A konstruktor

A konstruktor paramétereként meg kell adni, hogy mi lesz a párbeszédablak szülőablaka. Ezt követően példányosítjuk a grafikus elemeket. A párbeszédablakba be fogunk szúrni egy főpanelt, ennek megadjuk az alapelrendezését, amely BorderLayout lesz. A BorderLayout közepére helyezünk mégegy panelt (ezt panel_inputPanel-nek neveztük itt el), Ennek viszont GridLayout elrendezést adunk, amely tulajdonképpen egyfajta táblázatos szerkezetű elrendezést ad. Erre a panelre helyezünk rá konstans szövegeket (JLabel), és a beviteli mezőket (JTextField). A BorderLayout alsó részére jön a Felvisz gomb. Ehhez a gombhoz egy eseménykezelőt (ActionListener-t) rendelünk, amely figyeli, hogy megnyomtuk-e a gombot. Ha rányomunk a gombra, akkor az egy ActionEvent-et hoz létre. Az ActionListener figyeli ezeket az eseményeket és az actionPerfomed() metódusban dolgozza fel. A konstruktor végén szereplő pack() metódus a párbeszédablakot akkorára méretezi, amekkorában éppen elférnek a benne szereplő elemek.

public KonyvFelvitelUrlap(Frame szuloAblak) {
        
        super(szuloAblak, "Új könyv felvitele");
        
        // létrehozzuk a GUI objektumokat
        this.tf_konyvszamMezo = new JTextField();
        this.tf_szerzoMezo = new JTextField();
        this.tf_cimMezo = new JTextField();
        this.tf_kiadoMezo = new JTextField();
        this.tf_evMezo = new JTextField();
        this.button_felviszGomb = new JButton("Felvisz");
        
        // létrehozzuk a paneleket és azok elrendezéseit
        this.panel_foPanel = new JPanel();
        this.panel_foPanel.setLayout(new BorderLayout());
        this.panel_inputPanel = new JPanel();
        this.panel_inputPanel.setLayout(new GridLayout(5,2));
        
        // a főpanelt hozzáadjuk a dialógablakhoz
        this.getContentPane().add(panel_foPanel);
        
        // az input mezőket táblázatos elrendezésben helyezem el az  input panelen
        // mindegyik elé teszek egy konstans cimkét, hogy mit kell oda írni
        // a GridLayout elrendezésű konténereket sorfolytonosan kell feltölteni
        this.panel_inputPanel.add(new JLabel("Könyvszám:"));
        this.panel_inputPanel.add(this.tf_konyvszamMezo);
        this.panel_inputPanel.add(new JLabel("Cím:"));
        this.panel_inputPanel.add(this.tf_cimMezo);
        this.panel_inputPanel.add(new JLabel("Szerző:"));
        this.panel_inputPanel.add(this.tf_szerzoMezo);
        this.panel_inputPanel.add(new JLabel("Kiadó:"));
        this.panel_inputPanel.add(this.tf_kiadoMezo);
        this.panel_inputPanel.add(new JLabel("Kiadás éve:"));
        this.panel_inputPanel.add(this.tf_evMezo);
        
        // hozzáadjuk az input panelt a főpanelhez, középre
        this.panel_foPanel.add(panel_inputPanel, BorderLayout.CENTER);
        
        // a felvisz gombot hozzáadjuk a főpanel alsó részéhez
        this.panel_foPanel.add(button_felviszGomb, BorderLayout.SOUTH);
        
        // a FELVISZ gombhoz hozzárendelünk egy eseményfigyelőt
        this.button_felviszGomb.addActionListener(this);
        // a this azt mondja meg, hogy ez az osztály kezeli le az eseményt az actionPerformed() metódusban
        
        this.pack();
        
    }

Előkészítés és adatkezelő átadás

Az elokeszit() metódus nem csinál mást, mint inicializálja (üres sztring-re) a beviteli mezők tartalmát. 

A setAdatkezelo() metódusban megadhatunk a párbeszédablaknak egy adatkezelő objektumot, amely majd beviszi az adatbázisba a beviteli mezők tartalmát. Fontos megjegyezni, hogy nem a párbeszédablakban kezeljük az adatbázist! Erre külön osztályt készítettünk, viszont ahhoz, hogy meg tudjuk hívni az ő metódusait, meg kell mondani neki az AdatbazisKezelo osztályból létrehozott példányt.

   public void elokeszit() {
        this.tf_konyvszamMezo.setText("");
        this.tf_cimMezo.setText("");
        this.tf_szerzoMezo.setText("");
        this.tf_kiadoMezo.setText("");
        this.tf_evMezo.setText("");
    }
    
    
    public void setAdatkezelo(AdatbazisKezelo adatkezelo) {
        this.adatKezelo = adatkezelo;
    }
   

A gombnyomás feldolgozása és az adatok felvitele

Ezt a funkciót az eseménykezelés során valósítjuk meg. Az actionPerformed() által elkapott ActionEvent-ből lekérdezhetjük az esemény kiváltó objektumát. Ha ez a Felvisz gomb volt, akkor lekérjük a beviteli mezőben tárolt szövegeket egy-egy változóba, az év értékét egész számmá konvertáljuk. Ezeket a tartalmakat adjuk meg az ujKonyvetFelvisz() metódusnak, amely elvégzi a rekord beszúrását. Végül a dispose() utasítással bezárjuk a párbeszédablakot.

    /**
     * Ez a metódus fogja a gombnyomás eseményét feldolgozni
     **/
    public void actionPerformed(ActionEvent e) {
        
        // ha a FELVISZ gomb váltotta ki az eseményt ...
        if ( e.getSource().equals(this.button_felviszGomb) ) {
            String konyvszam = this.tf_konyvszamMezo.getText();
            String cim = this.tf_cimMezo.getText();
            String szerzo = this.tf_szerzoMezo.getText();
            String kiado = this.tf_kiadoMezo.getText();
            int ev = Integer.parseInt(this.tf_evMezo.getText()); // átalakítom
            
            boolean sikerult = this.adatKezelo.ujKonyvetFelvisz(konyvszam, cim, szerzo, kiado, ev);
          
            this.dispose();
        }
        
    }

Licensed under the Creative Commons Attribution Non-commercial Share Alike License 4.0