Advertisement
MikecIT

Frame.java

Nov 1st, 2016
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 12.61 KB | None | 0 0
  1. package app;
  2.  
  3. import java.awt.Color;
  4. import java.awt.EventQueue;
  5. import java.awt.Font;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8. import java.util.ArrayList;
  9. import java.util.HashMap;
  10.  
  11. import javax.swing.DefaultListModel;
  12. import javax.swing.JButton;
  13. import javax.swing.JFrame;
  14. import javax.swing.JLabel;
  15. import javax.swing.JList;
  16. import javax.swing.JScrollPane;
  17. import javax.swing.JTextField;
  18.  
  19. import podaci.Baze;
  20. import podaci.Osoba;
  21.  
  22. public class Frame
  23. {
  24.     private JFrame frmSpisakOsoba;
  25.     private JTextField txtIme;
  26.     private JTextField txtPrezime;
  27.     private JButton btnNapred;
  28.     private JButton btnNovi;
  29.     private JButton btnDodaj;
  30.     private JButton btnIzmeni;
  31.     private JButton btnObrisi;
  32.     private JButton btnOdustani;
  33.     private JButton btnNazad;
  34.     private JTextField txtGodine;
  35.     private JList<String> list;
  36.     private DefaultListModel<String> model;
  37.     private HashMap<Integer, Osoba> mapa;
  38.     private ArrayList<Osoba> osobe;
  39.     private int brojac;
  40.     private boolean provera;
  41.    
  42.     private void ucitaj()
  43.     {  
  44.         HashMap<Integer, Osoba> pom = Baze.iscitaj();
  45.         if(!pom.isEmpty())
  46.         {
  47.             mapa = pom;
  48.            
  49.             for (HashMap.Entry<Integer, Osoba> par : mapa.entrySet())
  50.             {
  51.                 osobe.add(par.getValue());
  52.             }
  53.         }
  54.     }
  55.    
  56.     public static void main(String[] args)
  57.     {
  58.         EventQueue.invokeLater(new Runnable()
  59.         {
  60.             public void run()
  61.             {
  62.                 try
  63.                 {
  64.                     Frame window = new Frame();
  65.                     window.frmSpisakOsoba.setVisible(true);
  66.                 }
  67.                 catch (Exception e)
  68.                 {
  69.                     e.printStackTrace();
  70.                 }
  71.             }
  72.         });
  73.     }
  74.  
  75.     public Frame()
  76.     {
  77.         initialize();
  78.     }
  79.  
  80.     private void initialize()
  81.     {
  82.         frmSpisakOsoba = new JFrame();
  83.         frmSpisakOsoba.setResizable(false);
  84.         frmSpisakOsoba.setTitle("Spisak osoba");
  85.         frmSpisakOsoba.setBounds(100, 100, 636, 380);
  86.         frmSpisakOsoba.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  87.         frmSpisakOsoba.getContentPane().setLayout(null);
  88.        
  89.         osobe = new ArrayList<Osoba>();
  90.         mapa = new HashMap<Integer, Osoba>();
  91.        
  92.         JLabel lblIme = new JLabel("Ime");
  93.         lblIme.setFont(new Font("Times New Roman", Font.PLAIN, 14));
  94.         lblIme.setBounds(25, 25, 46, 14);
  95.         frmSpisakOsoba.getContentPane().add(lblIme);
  96.        
  97.         JLabel lblPrezime = new JLabel("Prezime");
  98.         lblPrezime.setFont(new Font("Times New Roman", Font.PLAIN, 14));
  99.         lblPrezime.setBounds(25, 50, 60, 14);
  100.         frmSpisakOsoba.getContentPane().add(lblPrezime);
  101.        
  102.         JLabel lblDatumRodjenja = new JLabel("Godine starosti");
  103.         lblDatumRodjenja.setFont(new Font("Times New Roman", Font.PLAIN, 14));
  104.         lblDatumRodjenja.setBounds(25, 77, 96, 14);
  105.         frmSpisakOsoba.getContentPane().add(lblDatumRodjenja);
  106.        
  107.         txtIme = new JTextField();
  108.         txtIme.setEnabled(false);
  109.         txtIme.setDisabledTextColor(Color.BLACK);
  110.         txtIme.setFont(new Font("Times New Roman", Font.PLAIN, 14));
  111.         txtIme.setBounds(147, 22, 110, 20);
  112.         frmSpisakOsoba.getContentPane().add(txtIme);
  113.         txtIme.setColumns(10);
  114.        
  115.         txtPrezime = new JTextField();
  116.         txtPrezime.setEnabled(false);
  117.         txtPrezime.setDisabledTextColor(Color.BLACK);
  118.         txtPrezime.setFont(new Font("Times New Roman", Font.PLAIN, 14));
  119.         txtPrezime.setColumns(10);
  120.         txtPrezime.setBounds(147, 47, 110, 20);
  121.         frmSpisakOsoba.getContentPane().add(txtPrezime);
  122.        
  123.         txtGodine = new JTextField();
  124.         txtGodine.setFont(new Font("Times New Roman", Font.PLAIN, 14));
  125.         txtGodine.setEnabled(false);
  126.         txtGodine.setDisabledTextColor(Color.BLACK);
  127.         txtGodine.setColumns(10);
  128.         txtGodine.setBounds(147, 75, 110, 20);
  129.         frmSpisakOsoba.getContentPane().add(txtGodine);
  130.        
  131.         JScrollPane scrollPane = new JScrollPane();
  132.         scrollPane.setFocusable(false);
  133.         scrollPane.setBounds(10, 211, 600, 129);
  134.         frmSpisakOsoba.getContentPane().add(scrollPane);
  135.        
  136.         btnNazad = new JButton("Nazad");
  137.         btnNazad.addActionListener(new ActionListener()
  138.         {
  139.             public void actionPerformed(ActionEvent arg0)
  140.             {
  141.                 if(brojac > 0)
  142.                 {
  143.                     brojac--;
  144.                     txtIme.setText(osobe.get(brojac).getIme());
  145.                     txtPrezime.setText(osobe.get(brojac).getPrezime());
  146.                     txtGodine.setText(osobe.get(brojac).getGodine() + "");
  147.                    
  148.                     list.setSelectedIndex(brojac);
  149.                     btnNapred.setEnabled(true);
  150.                    
  151.                     if(brojac == 0)
  152.                     {
  153.                         btnNazad.setEnabled(false);
  154.                     }
  155.                    
  156.                     if(osobe.size() == 1)
  157.                     {
  158.                         btnNazad.setEnabled(false);
  159.                     }
  160.                 }
  161.                 else
  162.                 {
  163.                     btnNapred.setEnabled(false);
  164.                 }
  165.             }
  166.         });
  167.         btnNazad.setEnabled(false);
  168.         btnNazad.setBounds(10, 167, 89, 23);
  169.         frmSpisakOsoba.getContentPane().add(btnNazad);
  170.        
  171.         btnNapred = new JButton("Napred");
  172.         btnNapred.addActionListener(new ActionListener()
  173.         {
  174.             public void actionPerformed(ActionEvent e)
  175.             {
  176.                 if(brojac < osobe.size() - 1)
  177.                 {
  178.                     brojac++;
  179.                     txtIme.setText(osobe.get(brojac).getIme());
  180.                     txtPrezime.setText(osobe.get(brojac).getPrezime());
  181.                     txtGodine.setText(osobe.get(brojac).getGodine() + "");
  182.                    
  183.                     list.setSelectedIndex(brojac);
  184.                     btnNazad.setEnabled(true);
  185.                        
  186.                     if(brojac == osobe.size() - 1)
  187.                     {
  188.                         btnNapred.setEnabled(false);
  189.                     }
  190.                 }  
  191.             }
  192.         });
  193.         btnNapred.setBounds(113, 167, 89, 23);
  194.         frmSpisakOsoba.getContentPane().add(btnNapred);
  195.        
  196.         btnNovi = new JButton("Novi");
  197.         btnNovi.addActionListener(new ActionListener()
  198.         {
  199.             public void actionPerformed(ActionEvent e)
  200.             {
  201.                 btnOdustani.setVisible(true);
  202.                 btnOdustani.setEnabled(true);
  203.                 btnNovi.setEnabled(false);
  204.                
  205.                 btnDodaj.setEnabled(true);
  206.                
  207.                 txtIme.setEnabled(true);
  208.                 txtPrezime.setEnabled(true);
  209.                 txtGodine.setEnabled(true);
  210.                
  211.                 txtIme.setText("");
  212.                 txtPrezime.setText("");
  213.                 txtGodine.setText("");
  214.             }
  215.         });
  216.         btnNovi.setBounds(217, 167, 89, 23);
  217.         frmSpisakOsoba.getContentPane().add(btnNovi);
  218.        
  219.         btnDodaj = new JButton("Dodaj");
  220.         btnDodaj.addActionListener(new ActionListener()
  221.         {
  222.             public void actionPerformed(ActionEvent e)
  223.             {
  224.                 try
  225.                 {
  226.                     Osoba novi = new Osoba(txtIme.getText(), txtPrezime.getText(), Integer.parseInt(txtGodine.getText()));
  227.                     osobe.add(novi);
  228.                    
  229.                     int max = 0;
  230.                     for (HashMap.Entry<Integer, Osoba> par : mapa.entrySet())
  231.                     {
  232.                         if(par.getKey() > max)
  233.                         {
  234.                             max = par.getKey();
  235.                         }
  236.                     }
  237.                     mapa.put(max + 1, novi);
  238.                     Baze.upisi(novi);
  239.                    
  240.                     model.removeAllElements();
  241.                    
  242.                     upisiUListu();
  243.                    
  244.                     list.setSelectedIndex(osobe.size() - 1);
  245.                     brojac = osobe.size() - 1;
  246.                     btnNazad.setEnabled(true);
  247.                     btnNapred.setEnabled(false);
  248.                     btnDodaj.setEnabled(false);
  249.                     btnOdustani.setEnabled(false);
  250.                     btnOdustani.setVisible(false);
  251.                 }
  252.                 catch(Exception ex)
  253.                 {
  254.                     btnDodaj.setEnabled(false);
  255.                     btnOdustani.setEnabled(false);
  256.                     btnOdustani.setVisible(false);
  257.                     txtIme.setText(osobe.get(brojac).getIme());
  258.                     txtPrezime.setText(osobe.get(brojac).getPrezime());
  259.                     txtGodine.setText(osobe.get(brojac).getGodine() + "");
  260.                 }
  261.                 finally
  262.                 {
  263.                     txtIme.setEnabled(false);
  264.                     txtPrezime.setEnabled(false);
  265.                     txtGodine.setEnabled(false);
  266.                 }
  267.                
  268.                 btnNovi.setEnabled(true);
  269.                
  270.                 if(!btnIzmeni.isEnabled() && !btnObrisi.isEnabled())
  271.                 {
  272.                     btnIzmeni.setEnabled(true);
  273.                     btnObrisi.setEnabled(true);
  274.                 }
  275.             }
  276.         });
  277.         btnDodaj.setEnabled(false);
  278.         btnDodaj.setBounds(316, 167, 89, 23);
  279.         frmSpisakOsoba.getContentPane().add(btnDodaj);
  280.        
  281.         btnIzmeni = new JButton("Izmeni");
  282.         btnIzmeni.addActionListener(new ActionListener()
  283.         {
  284.             public void actionPerformed(ActionEvent e)
  285.             {
  286.                 try
  287.                 {
  288.                     if(provera == false)
  289.                     {
  290.                         txtIme.setEnabled(true);
  291.                         txtPrezime.setEnabled(true);
  292.                         txtGodine.setEnabled(true);
  293.                         provera = true;
  294.                     }
  295.                     else
  296.                     {
  297.                         int index = list.getSelectedIndex();
  298.                         Osoba novi = new Osoba(txtIme.getText(), txtPrezime.getText(), Integer.parseInt(txtGodine.getText()));
  299.                         HashMap.Entry<Integer, Osoba> pom = null;
  300.                        
  301.                         for (HashMap.Entry<Integer, Osoba> par : mapa.entrySet())
  302.                         {
  303.                             if(par.getValue().compareTo(osobe.get(index)) == 1)
  304.                             {
  305.                                 pom = par;
  306.                                 break;
  307.                             }
  308.                         }
  309.                        
  310.                        
  311.                        
  312.                         if(osobe.get(index).compareTo(novi) != 1)
  313.                         {
  314.                             osobe.get(index).clone(novi);
  315.                            
  316.                             model.removeAllElements();
  317.                            
  318.                             upisiUListu();
  319.                            
  320.                             mapa.get(pom.getKey()).clone(novi);
  321.                             Baze.izmeni(pom);
  322.                            
  323.                         }
  324.                        
  325.                         brojac = index;
  326.                        
  327.                         list.setSelectedIndex(index);
  328.                        
  329.                         txtIme.setEnabled(false);
  330.                         txtPrezime.setEnabled(false);
  331.                         txtGodine.setEnabled(false);
  332.                         provera = false;
  333.                     }
  334.                 }
  335.                 catch(Exception ex)
  336.                 {
  337.                     txtIme.setText(osobe.get(brojac).getIme());
  338.                     txtPrezime.setText(osobe.get(brojac).getPrezime());
  339.                     txtGodine.setText(osobe.get(brojac).getGodine() + "");
  340.                     txtIme.setEnabled(false);
  341.                     txtPrezime.setEnabled(false);
  342.                     txtGodine.setEnabled(false);
  343.                     provera = false;
  344.                 }
  345.             }
  346.         });
  347.         btnIzmeni.setBounds(415, 167, 89, 23);
  348.         frmSpisakOsoba.getContentPane().add(btnIzmeni);
  349.        
  350.         btnObrisi = new JButton("Obrisi");
  351.         btnObrisi.addActionListener(new ActionListener()
  352.         {
  353.             public void actionPerformed(ActionEvent e)
  354.             {
  355.                 int index = list.getSelectedIndex();
  356.                
  357.                 for (HashMap.Entry<Integer, Osoba> par : mapa.entrySet())
  358.                 {
  359.                     if(par.getValue().compareTo(osobe.get(index)) == 1)
  360.                     {
  361.                         mapa.remove(par.getKey());
  362.                         Baze.obrisi(par);
  363.                         break;
  364.                     }
  365.                 }
  366.                
  367.                 osobe.remove(index);
  368.                 model.removeAllElements();
  369.                
  370.                 upisiUListu();
  371.                
  372.                 if(osobe.isEmpty())
  373.                 {
  374.                     txtIme.setText("");
  375.                     txtPrezime.setText("");
  376.                     txtGodine.setText("");
  377.                    
  378.                     btnObrisi.setEnabled(false);
  379.                     btnNapred.setEnabled(false);
  380.                     btnIzmeni.setEnabled(false);
  381.                     btnNazad.setEnabled(false);
  382.                 }
  383.                 else
  384.                 {
  385.                     if(index - 1 == osobe.size() - 1)
  386.                     {
  387.                         Osoba pom = new Osoba();
  388.                         pom.clone(osobe.get(index - 1));
  389.                         txtIme.setText(pom.getIme());
  390.                         txtPrezime.setText(pom.getPrezime());
  391.                         txtGodine.setText(pom.getGodine() + "");
  392.                         list.setSelectedIndex(index - 1);
  393.                     }
  394.                     else
  395.                     {
  396.                         Osoba pom = new Osoba();
  397.                         pom.clone(osobe.get(index));
  398.                         txtIme.setText(pom.getIme());
  399.                         txtPrezime.setText(pom.getPrezime());
  400.                         txtGodine.setText(pom.getGodine() + "");
  401.                         list.setSelectedIndex(index);
  402.                     }
  403.                    
  404.                     if(osobe.size() == 1)
  405.                     {
  406.                         btnNapred.setEnabled(false);
  407.                         btnNazad.setEnabled(false);
  408.                     }
  409.                 }
  410.             }
  411.         });
  412.         btnObrisi.setBounds(514, 167, 89, 23);
  413.         frmSpisakOsoba.getContentPane().add(btnObrisi);
  414.        
  415.         btnOdustani = new JButton("Odustani");
  416.         btnOdustani.addActionListener(new ActionListener()
  417.         {
  418.             public void actionPerformed(ActionEvent e)
  419.             {
  420.                 try
  421.                 {
  422.                     Osoba pom = new Osoba();
  423.                    
  424.                     pom.clone(osobe.get(list.getSelectedIndex()));
  425.                    
  426.                     txtIme.setText(pom.getIme());
  427.                     txtPrezime.setText(pom.getPrezime());
  428.                     txtGodine.setText(pom.getGodine() + "");
  429.                     txtIme.setEnabled(false);
  430.                     txtPrezime.setEnabled(false);
  431.                     txtGodine.setEnabled(false);
  432.                     btnOdustani.setEnabled(false);
  433.                     btnDodaj.setEnabled(false);
  434.                     btnOdustani.setVisible(false);
  435.                     btnNovi.setEnabled(true);
  436.                 }
  437.                 catch(Exception ex)
  438.                 {
  439.                     txtIme.setText("");
  440.                     txtPrezime.setText("");
  441.                     txtGodine.setText("");
  442.                     txtIme.setEnabled(false);
  443.                     txtPrezime.setEnabled(false);
  444.                     txtGodine.setEnabled(false);
  445.                     btnOdustani.setEnabled(false);
  446.                     btnDodaj.setEnabled(false);
  447.                     btnOdustani.setVisible(false);
  448.                     btnNovi.setEnabled(true);
  449.                 }
  450.             }
  451.         });
  452.         btnOdustani.setEnabled(false);
  453.         btnOdustani.setVisible(false);
  454.         btnOdustani.setBounds(316, 122, 89, 23);
  455.         frmSpisakOsoba.getContentPane().add(btnOdustani);
  456.        
  457.         ucitaj();
  458.        
  459.         model = new DefaultListModel<String>();
  460.         upisiUListu();
  461.         list = new JList<String>(model);
  462.         scrollPane.setColumnHeaderView(list);
  463.        
  464.         if(!osobe.isEmpty())
  465.         {
  466.             txtIme.setText(osobe.get(0).getIme());
  467.             txtPrezime.setText(osobe.get(0).getPrezime());
  468.             txtGodine.setText(osobe.get(0).getGodine() + "");
  469.  
  470.             if(osobe.size() == 1)
  471.             {
  472.                 btnNapred.setEnabled(false);
  473.                 btnNazad.setEnabled(false);
  474.             }
  475.         }
  476.         else
  477.         {
  478.             btnObrisi.setEnabled(false);
  479.             btnNapred.setEnabled(false);
  480.             btnIzmeni.setEnabled(false);
  481.            
  482.         }
  483.        
  484.         brojac = 0;
  485.         list.setSelectedIndex(brojac);
  486.     }
  487.    
  488.     private void upisiUListu()
  489.     {
  490.         for(Osoba i : osobe)
  491.         {
  492.             String linija = String.format("%-32s", i.getIme()) + String.format("%-33s", i.getPrezime()) + String.format("%-32s", i.getGodine());
  493.             model.addElement(linija);
  494.         }
  495.     }
  496. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement