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