Java basics

Java basics

2025. május 22. - React basics

Java basics

 

GuiForm.java

 

package hu.szamalk.nezet;

import hu.szamalk.modell.Ember;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;

public class GuiForm {
    private JPanel pnlMain;

    private List<Ember> emberek;
    private JFrame form;
    // 1.  altInsert enteres Construktor

    public GuiForm() {
        //célszerú ini metódust használni
        emberek=new ArrayList<>();

        form = new JFrame("Címe");
        form.setSize(320,240);
        form.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);

        form.setContentPane(pnlMain);

        JMenuItem mnuKilepes=new JMenuItem("Kilépés");
        JMenuItem mnuBetoltes=new JMenuItem("Betöltés");
        JMenu mnu= new JMenu("Program");
        //.add ->JMenu MenuItem
        mnu.add(mnuBetoltes);
        mnu.add(new JSeparator());
        mnu.add(mnuKilepes);
        JMenuBar mb = new JMenuBar();
        // .add -> JMenu
        mb.add(mnu);
        form.setJMenuBar(mb);

        mnuBetoltes.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                JFileChooser fc = new JFileChooser(System.getProperty("user.dir"));
                int gomb = fc.showOpenDialog(null);

                //mit fog csinálni ez a menu
                // Path.of->string first
                // sorokra visz az egér ->Create local variable ->enter arra ami feljön
                //readAllLines-ra az egér->Sorrounde with try catch
                try {
                    if(gomb == JFileChooser.APPROVE_OPTION){
                        List<String> sorok = Files.readAllLines(Path.of(fc.getSelectedFile().getAbsolutePath()));
    // osztály, aminek a konstruktora fogadja a beolvasott sorok aktuális sorát... tartalmat majd valahogy megjeleniti.

                        for (String sor : sorok) {
                            Ember ember = new Ember(sor);
                            emberek.add(ember);
                        }
                    }

                } catch (IOException ex) {
                    System.err.println("I/O hiba");
                }
            }
        });

        mnuKilepes.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // egér fölé visz-> create method -> Gui Formos opció
                kilepes();
            }
        }); 

        // new Windowadapter -> 2. opciot választ
        form.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                super.windowClosing(e);
                kilepes();
            }
        });

        form.setVisible(true);
    } 

    private void kilepes() {
        int tipus = JOptionPane.YES_NO_OPTION;
        int gomb = JOptionPane.showConfirmDialog(null, "Biztos kilép?", "KILÉPÉS", tipus );
        if(gomb == JOptionPane.YES_OPTION) {
            System.exit(0);
        }
    } 

    public static void main(String[] args) {
        new GuiForm();
    }
}

Ember.java

package hu.szamalk.modell;

public class Ember {

    // ilyen adattagok vannak a fájl minden sorában

    //altInsert enter
    public Ember(String faljEgySora){
        //split és inicializáció
    }
}

JavaGyak - rövid konzolos

Kontener.java

package hu.szamalk.modell;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Kontener implements Serializable {
    // Gyujtemeny, amely mukincs objektumokat tartalmaz
    private List<OsOsztaly> elemek;

    // 4. altIns contruktor
    public Kontener() {
        elemek = new ArrayList<>();
    }

    // 6. altins getter
    public List<OsOsztaly> getElemek() {
        // nincs referencia a private adattagra
        //return new ArrayList<>(elemek);
        //nincs referencia kiéte lezs, ha modositjuk :
        return Collections.unmodifiableList(elemek);
    }

    public void felvesz(OsOsztaly elem){
        elemek.add(elem);
    }
}

OsOsztaly.java

package hu.szamalk.modell;

public class OsOsztaly {
    //mukoncs
    private double d;

    // Alt Insert getter (bárhova kattintva)
    public double getD() {
        return d;
    }

    // Alt Insert setter
    public void setD(double d) {
        this.d = d;
    }
}

Utod1.java

package hu.szamalk.modell;

import java.util.Comparator;

public class Utod1 extends OsOsztaly implements Comparable<Utod1>{   //  1. comparable-ra visz az egér-> implement method
    //festmeny, a festmeny az egy mukincs
    int i;
    String s;

    //3. AltIns getter, mindekttovel
    public int getI() {
        return i;
    }

    public String getS() {
        return s;
    }

    @Override
    public int compareTo(Utod1 masik) {
        //return this.i - masik.i;
       // return this.s.compareTo(masik.s);
        return Double.compare(this.getD(), masik.getD());
    }

    public static class RenzdezoOsztaly implements Comparator<Utod1> {   
// 2. comparable-ra visz az egér-> implement method. Csak az elsot
        @Override
        public int compare(Utod1 o1, Utod1 o2) {
            return 0;
        }
    }
}

Utod2.java

package hu.szamalk.modell;

public class Utod2 extends OsOsztaly{
    //szobor, a szobor az egy mukincs
}

Konzol.java

package hu.szamalk.nezet;

import hu.szamalk.modell.Kontener;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class Konzol {

    private Kontener kontener;

    // 5. altINs Construktor
    public Konzol() {
        kontener= new Kontener();
    }

    public void fajlbaIr(){
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("fajNev.bin"));
        oos.writeObject(kontener);
    }
}

HosszuGui

GuiForm.java

package hu.szamalk.nezet;

import hu.szamalk.modell.FormModell;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.*;

public class GuiForm implements Serializable{
    private JPanel pnlMain;
    private JComboBox cmbElemek;
    private JTextField txtElem;
    private JButton btnFelvesz;
    private JList list1;
    private JCheckBox chbMozgat;

    private JFrame frame;

    // 1. altins enter construktor
    public GuiForm() {
        ini(); // egér rávisz create method
        // a guin gombon jobclikk, create listener-> actionListener
        btnFelvesz.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println();
                String elem =txtElem.getText();
                if (elem.isBlank()){
                    elem ="elem: " + + (int) (Math.random()*100);
                }
                cmbElemek.addItem(elem);
            }
        });
        // a guin combo boxon  jobclikk, create listener-> actionListener
        cmbElemek.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) { // kijelöl sorround with if
                if (cmbElemek.getSelectedIndex()>0) {
                    String elem = (String) cmbElemek.getSelectedItem(); // cmbElemre egér, create expression to java string
                    DefaultListModel <String> dlm = (DefaultListModel<String>) list1.getModel();   //lm volt, egér rávisz - create localVariable -> LiatMOdel lett belole //list1-re egér, átcastol
                    dlm.addElement(elem);

                    if (chbMozgat.isSelected()){
                        cmbElemek.removeItem(elem);
                        cmbElemek.setSelectedIndex(0);
                    }
                }
            }
        });
        // a guin a listen  jobclikk, create listener-> Mouselistener - clicked
        list1.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                super.mouseClicked(e);
                if(e.getClickCount()==2){
                    DefaultListModel <String> dlm = (DefaultListModel<String>) list1.getModel();
                    dlm.remove(list1.getSelectedIndex());
                }
            }
        });
    }
    private void ini() {
        frame = new JFrame("List és Combo");  //Frame hez kell hozzaadni a menut
        frame.setContentPane(pnlMain);
        frame.setSize(520, 240);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        //frame.setVisible(true);

        DefaultListModel<String> dlm = new DefaultListModel<>();
        list1.setModel(dlm);

        JMenuItem mitMent = new JMenuItem("Mentés");
        JMenuItem mitTolt = new JMenuItem("Betöltés");
        JMenuItem mitKilep = new JMenuItem("Kilépés");
        JMenu mnuProgram = new JMenu("Program");
        mnuProgram.add(mitMent);
        mnuProgram.add(mitTolt);
        mnuProgram.add(new JSeparator());
        mnuProgram.add(mitKilep);
        JMenuBar bar = new JMenuBar();
        bar.add(mnuProgram); // ettol jelenik meg
        frame.setJMenuBar(bar);

        frame.setVisible(true);

        mitMent.addActionListener(new ActionListener() { //kézzel beír new és enterrel kivlaszt
            @Override
            public void actionPerformed(ActionEvent e) {
                JFileChooser jfc = new JFileChooser(new File(System.getProperty("user.dir")));
                if (jfc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
                    File fajl = jfc.getSelectedFile();

                    try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(fajl))) {
                        FormModell modell = new FormModell();
                        modell.setChbMozgat(chbMozgat.isSelected());
                        oos.writeObject(modell); //ezért kell kellett a FromModell

                    } catch (FileNotFoundException ex) {
                        System.err.println("hiba: fájl nincs meg");
                    } catch (IOException ex) {
                        System.err.println("hiba: I/O");
                        System.err.println("oka: O" + ex.getMessage());
                        ex.printStackTrace();
                   }
                }
           }
        });

        mitTolt.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JFileChooser jfc = new JFileChooser(new File(System.getProperty("user.dir")));
                if (jfc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
                    File fajl = jfc.getSelectedFile();

                    try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(fajl))) {
                        FormModell modell = (FormModell) ois.readObject();
                        chbMozgat.setSelected(modell.isChbMozgat());

                    } catch (FileNotFoundException ex) {
                        System.err.println("hiba: fájl nincs meg");
                    } catch (IOException ex) {
                        System.err.println("hiba: I/O");
                        System.err.println("oka: O" + ex.getMessage());
                        ex.printStackTrace();

                    } catch (ClassNotFoundException ex) {
                        System.err.println("hiba: FormModell hiányzik");
                    }
                }
            }
        });
   }

        public static void main(String[] args) {
            new GuiForm();
        }
}

FormModell.java

package hu.szamalk.modell;

import java.io.Serializable;

public class FormModell implements Serializable {
    private boolean chbMozgat;

    public FormModell() {
        chbMozgat = false;
    }

    public boolean isChbMozgat() {
        return chbMozgat;
    }

    public void setChbMozgat(boolean chbMozgat) {
        this.chbMozgat = chbMozgat;
    }
}

HosszuKonzol

Konyvtar.java

package hu.szamalk.modell;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Konyvtar implements Serializable {
    private List<Media> mediak;
    private List<Konyv> konyvek;

    public Konyvtar() {
        mediak = new ArrayList<>();
        konyvek = new ArrayList<>();
        feltoltFajlbol();
    }

    public void konyvtarTartlamatBinarisFajlbaMent(){
        //try with resources
        //ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("fajl.dat"));
        //oos.writeObject(this);  //a k lesz a this
    }

    private void feltoltFajlbol() {
        try {
            List<String> sorok = Files.readAllLines(Path.of("konyvek.txt"));
            for (String sor : sorok) {
                // mediak.add(new Konyv("szerzo1", "cim1"));
                //konyvek.add(new Konyv("szerzo1", "cim1"));
                String[] s = sor.split(";");
                String szerzo = s[0];
                String cim = s[1];
                int ev = Integer.parseInt(s[2]);

                konyvek.add(new Konyv(szerzo, cim, ev));
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    public List<Konyv> getKonyvek(){
        //List<Konyv> konyvek = new ArrayList<>();
        for (Media media: mediak){
            if (media instanceof Konyv){
                konyvek.add((Konyv)media);
            }
        }
        return konyvek;
    }

    public  List<Konyv> getKonyvekKiadasSzerintRendeve(){
       // List<Konyv> konyvek = getKonyvek();
        Collections.sort(konyvek);
        return konyvek;
    }

    public String legfiatalabbKonyvCime(){
        return konyvek.get(0).getCim();
    }

    public void kiadottKonyvek2000UtanFajlban() throws IOException {
        String kiirtTatalomString = ""; //fel kell tolteni a feladatot
        List<String> kiirtTartalomLista = new ArrayList<>();
        Files.write(Path.of("kiadottKonyvek2000UtanFajlban.txt"), kiirtTatalomString.getBytes());
        Files.write(Path.of("kiadottKonyvek2000UtanFajlban.txt"), kiirtTartalomLista);
    }

    public void ujMediatFelvesz(Media media){
      mediak.add(media);
    }
}

Konyv.java

package hu.szamalk.modell;

public class Konyv extends Media implements Comparable<Konyv>{
    public int kiadasiEv;
    public String cim;

    public Konyv(String szerzo, String cim) {
       this(szerzo, cim, 2000);
    }

    public Konyv(String sor) {
        String[] s = sor.split(";");
        // ide jött volna a többi mező beállítása
    }

    public Konyv(String szerzo, String cim, int kiadasiEv) {
        super(szerzo);
        this.cim = cim;
        this.kiadasiEv = kiadasiEv;
        //itt dobhatnénk akár saját kivételt
    }

    public int getKiadasiEv() {
        return kiadasiEv;
    }

    public String getCim() {
        return cim;
    }

    //setter a leiras alaojan

    @Override
    public int compareTo(Konyv masik) {
        //alapértelmezett rend. szempont:cim <-- String
        //return this.cim.compareTo(masik.cim);

        //alapértelmezett rend. szempont:kiadasEve <-- int
        return this.kiadasiEv - masik.kiadasiEv;

        //egyeb rendezesi szempont Conmparator konyv de masik osztalyban
    }
}

Media.java

package hu.szamalk.modell;

import java.util.UUID;

public class Media {
    private UUID id;
    private String szerzo;

    public Media(String szerzo) {
        this.szerzo = szerzo;
        setId();
        //itt dobhatnénk akár saját kivételt
    }

    public UUID getId() {
        return id;
     }

    public String getSzerzo() {
        return szerzo;
    }

    public void setId() {
        this.id = UUID.randomUUID();
    }

    public void setSzerzo(String szerzo) {
        this.szerzo = szerzo;
        //itt dobhatnénk akár saját kivételt
    }
}

Ujsag.java

package hu.szamalk.modell;

public class Ujsag extends Media{
    public Ujsag(String szerzo) {
        super(szerzo);
    }
}

Konzol.java

package hu.szamalk.nezet;

import hu.szamalk.modell.Konyv;
import hu.szamalk.modell.Konyvtar;

import java.io.IOException;

public class Konzol {
    public static void main(String[] args) {
        new Konzol();
    }

    public Konzol() {
        Konyvtar k = new Konyvtar();
        try {
            k.kiadottKonyvek2000UtanFajlban();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        System.out.println("cim: "+ k.legfiatalabbKonyvCime());
        k.konyvtarTartlamatBinarisFajlbaMent();
    }
}

 

konyvek.txt
//a fo fo mappaba csinaljuk a txt-t

SZERZO;CIM;KIADASI_EV
SZ1;C1;2000
SZ1;C2;2003
SZ2;C1;2015

 

 

süti beállítások módosítása