Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.50 KB | None | 0 0
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import java.util.*;
  4.  
  5. import javax.swing.*;
  6. import javax.swing.table.DefaultTableModel;
  7.  
  8. /*=======  TU PROSZE SIE PODPISAC ==============================
  9.  *      Imie:
  10.  *  Nazwisko:
  11.  *Nr indeksu:
  12.  *     Grupa:
  13.  *==============================================================
  14.  */
  15.  
  16. class Banknot {
  17.    
  18.     String waluta;
  19.     double wartosc;
  20.    
  21.     public Banknot(String waluta, int wartosc) {
  22.         this.waluta = waluta;
  23.         this.wartosc = wartosc;
  24.     }
  25.    
  26.     @Override
  27.     public String toString() {
  28.         return waluta + " " + waluta;
  29.     }
  30.  
  31.     @Override
  32.     public int hashCode() {
  33.         final int prime = 31;
  34.         int result = 1;
  35.         result = prime * result + ((waluta == null) ? 0 : waluta.hashCode());
  36.         long temp;
  37.         temp = Double.doubleToLongBits(wartosc);
  38.         result = prime * result + (int) (temp ^ (temp >>> 32));
  39.         return result;
  40.     }
  41.  
  42.     @Override
  43.     public boolean equals(Object obj) {
  44.         if (this == obj)
  45.             return true;
  46.         if (obj == null)
  47.             return false;
  48.         if (getClass() != obj.getClass())
  49.             return false;
  50.         Banknot other = (Banknot) obj;
  51.         if (waluta == null) {
  52.             if (other.waluta != null)
  53.                 return false;
  54.         } else if (!waluta.equals(other.waluta))
  55.             return false;
  56.         if (Double.doubleToLongBits(wartosc) != Double.doubleToLongBits(other.wartosc))
  57.             return false;
  58.         return true;
  59.     }
  60.    
  61.    
  62.    
  63. } // koniec klasy Banknot
  64.  
  65.  
  66. class Panel extends JPanel implements MouseListener, MouseMotionListener, Runnable {
  67.  
  68.     /**
  69.      *
  70.      */
  71.     private static final long serialVersionUID = 1L;
  72.    
  73.     boolean isPressed = false;
  74.     boolean isOnScreen = false;
  75.     int mouseX, mouseY, x=0;
  76.    
  77.     @Override
  78.     protected void paintComponent(Graphics g) {
  79.         super.paintComponent(g);
  80.        
  81.         g.setColor(Color.BLACK);
  82.        
  83.         if(isPressed && isOnScreen) {
  84.             g.fillOval(mouseX -25, mouseY-25, 50, 50);
  85.         } else if(!isPressed && isOnScreen){
  86.             g.drawOval(mouseX-25, mouseY-25, 50, 50);
  87.         }
  88.        
  89.         g.setColor(Color.YELLOW);
  90.         g.fillOval(x, 0, 50, 50);
  91.    
  92.     }
  93.  
  94.     @Override
  95.     public void mouseDragged(MouseEvent e) {
  96.         mouseX = e.getX();
  97.         mouseY = e.getY();
  98.         repaint();
  99.     }
  100.  
  101.     @Override
  102.     public void mouseMoved(MouseEvent e) {
  103.         mouseX = e.getX();
  104.         mouseY = e.getY();
  105.         repaint();
  106.     }
  107.  
  108.     @Override
  109.     public void mouseClicked(MouseEvent e) {}
  110.  
  111.     @Override
  112.     public void mouseEntered(MouseEvent e) {
  113.         isOnScreen = true;
  114.         mouseX = e.getX();
  115.         mouseY = e.getY();
  116.         repaint();
  117.     }
  118.  
  119.     @Override
  120.     public void mouseExited(MouseEvent e) {
  121.         isOnScreen = false;
  122.         repaint();
  123.     }
  124.  
  125.     @Override
  126.     public void mousePressed(MouseEvent e) {
  127.         isPressed = true;
  128.         mouseX = e.getX();
  129.         mouseY = e.getY();
  130.         repaint();
  131.     }
  132.  
  133.     @Override
  134.     public void mouseReleased(MouseEvent e) {
  135.         isPressed = false;
  136.         mouseX = e.getX();
  137.         mouseY = e.getY();
  138.         repaint();
  139.     }
  140.  
  141.     @Override
  142.     public void run() {
  143.         while(true) {
  144.             try {
  145.                 Thread.sleep(10);
  146.             } catch (InterruptedException e) {
  147.                 e.printStackTrace();
  148.             }
  149.             x++;
  150.             if(x>600) {
  151.                 x=0;
  152.             }
  153.             repaint();
  154.         }
  155.     }
  156.    
  157.  
  158. } // koniec klasy Panel
  159.  
  160.  
  161. public class Okno extends JFrame implements ActionListener, Runnable{
  162.  
  163.     // Tu proszďż˝ dopisaďż˝ brakujďż˝ce metody oraz uzupeďż˝niďż˝
  164.     // zadeklarowane poniďż˝ej metody implementujďż˝ce
  165.     // niezbďż˝dne interfejsy.
  166.    
  167.     /**
  168.      *
  169.      */
  170.     private static final long serialVersionUID = 1L;
  171.    
  172.     private int timer;
  173.     private HashSet<Banknot> banknots = new HashSet<>();
  174.     private WidokKolekcji widokKolekcji = new WidokKolekcji(banknots);
  175.  
  176.     public static void main(String [] args) {
  177.         new Okno();
  178.     }
  179.    
  180.     JButton authorButton = new JButton("Autor");
  181.     JMenuBar menuBar = new JMenuBar();
  182.     JMenu file = new JMenu("Plik");
  183.     JMenuItem authorMenu = new JMenuItem("Autor");
  184.     JMenuItem closeMenu = new JMenuItem("Zakończ");
  185.    
  186.     JLabel seconds = new JLabel("Sekundy:");
  187.     JButton resetButton = new JButton("Zeruj");
  188.     JTextField timerField = new JTextField(7);
  189.    
  190.     JLabel waluta = new JLabel("Waluta: ");
  191.     JLabel wartosc = new JLabel("Wartość: ");
  192.     JTextField walutaField = new JTextField(5);
  193.     JTextField wartoscField = new JTextField(5);
  194.     JButton addBanknot = new JButton("Dodaj Banknot");
  195.     JButton deleteBanknot = new JButton("Usuń Banknot");
  196.     JButton deleteAllBanknots = new JButton("Usuń wszystkie");
  197.    
  198.     Panel panel = new Panel();
  199.    
  200.     public Okno() {
  201.         super("Mateusz Polok");
  202.         setSize(600,300);
  203.         setDefaultCloseOperation(EXIT_ON_CLOSE);
  204.         setResizable(false);
  205.         setLocationRelativeTo(null);
  206.        
  207.         file.add(authorMenu);
  208.         file.add(closeMenu);
  209.         menuBar.add(file);
  210.         setJMenuBar(menuBar);
  211.        
  212.         timerField.setEditable(false);
  213.         timerField.setText(""+timer);
  214.        
  215.         authorMenu.addActionListener(this);
  216.         closeMenu.addActionListener(this);
  217.         authorButton.addActionListener(this);
  218.         resetButton.addActionListener(this);
  219.        
  220.         addBanknot.addActionListener(this);
  221.         deleteAllBanknots.addActionListener(this);
  222.         deleteBanknot.addActionListener(this);
  223.        
  224.         panel.add(authorButton);
  225.         panel.add(seconds);
  226.         panel.add(timerField);
  227.         panel.add(resetButton);
  228.        
  229.         panel.add(waluta);
  230.         panel.add(walutaField);
  231.         panel.add(wartosc);
  232.         panel.add(wartoscField);
  233.        
  234.         panel.add(widokKolekcji);
  235.        
  236.         panel.add(addBanknot);
  237.         panel.add(deleteBanknot);
  238.         panel.add(deleteAllBanknots);
  239.        
  240.         panel.addMouseListener(panel);
  241.         panel.addMouseMotionListener(panel);
  242.        
  243.         setContentPane(panel);
  244.         setVisible(true);
  245.         new Thread(this).start();
  246.         panel.run();
  247.     }
  248.  
  249.     @Override
  250.     public void actionPerformed(ActionEvent e) {
  251.         Object event = e.getSource();
  252.        
  253.         if(event == authorButton) {
  254.             JOptionPane.showMessageDialog(this, "Mateusz Polok", "Autor", JOptionPane.INFORMATION_MESSAGE);
  255.         }
  256.         if(event == authorMenu) {
  257.             JOptionPane.showMessageDialog(this, "Mateusz Polok", "Autor", JOptionPane.INFORMATION_MESSAGE);
  258.         }
  259.         if(event == closeMenu) {
  260.             System.exit(0);
  261.         }
  262.         if(event == resetButton) {
  263.             timer = 0;
  264.             timerField.setText(""+timer);
  265.         }
  266.         if(event == addBanknot) {
  267.             String waluta;
  268.             int wartosc;
  269.             try {
  270.                 wartosc = Integer.parseInt(wartoscField.getText());
  271.                 waluta = walutaField.getText();
  272.                 if(waluta.length()>0) {
  273.                     widokKolekcji.kolekcja.add(new Banknot(waluta, wartosc));
  274.                     widokKolekcji.refresh();
  275.                 }else {
  276.                     JOptionPane.showMessageDialog(this, "Pole waluta nie moze byc puste");
  277.                 }
  278.             }catch (NumberFormatException e1) {
  279.                 JOptionPane.showMessageDialog(this, "Pole wartosc musi być liczbą!");
  280.             }
  281.         }
  282.         if(event == deleteBanknot) {
  283.             String waluta;
  284.             int wartosc;
  285.             try {
  286.                 wartosc = Integer.parseInt(wartoscField.getText());
  287.                 waluta = walutaField.getText();
  288.                 if(waluta.length()>0) {
  289.                     widokKolekcji.kolekcja.remove(new Banknot(waluta, wartosc));
  290.                     widokKolekcji.refresh();
  291.                 }else {
  292.                     JOptionPane.showMessageDialog(this, "Pole waluta nie moze byc puste");
  293.                 }
  294.             }catch (NumberFormatException e1) {
  295.                 JOptionPane.showMessageDialog(this, "Pole wartosc musi być liczbą!");
  296.             }
  297.         }
  298.         if(event == deleteAllBanknots) {
  299.             widokKolekcji.kolekcja.removeAll(banknots);
  300.             widokKolekcji.refresh();
  301.         }
  302.     }
  303.    
  304.     @Override
  305.     public void run() {
  306.         while(true) {
  307.             try {
  308.                 Thread.sleep(1000);
  309.             } catch (InterruptedException e) {
  310.                 e.printStackTrace();
  311.             }
  312.             timer++;
  313.             timerField.setText(""+timer);
  314.         }
  315.     }
  316.  
  317. } // koniec klasy Okno
  318.  
  319.  
  320. class WidokKolekcji extends JScrollPane {
  321.     private static final long serialVersionUID = 1L;
  322.  
  323.     // W TEJ KLASIE NIE TRZEBA NIC MODYFIKOWAďż˝ !!!
  324.  
  325.     private JTable tabela;
  326.     private DefaultTableModel modelTabeli;
  327.     Collection<Banknot> kolekcja;
  328.  
  329.     /* Do konstruktora naleďż˝y przekazaďż˝ referencjďż˝
  330.      * na kolekcjďż˝, ktďż˝rej zawarto�� ma byďż˝ wyďż˝wietlana
  331.      * na panelu
  332.      */
  333.     WidokKolekcji(Collection<Banknot> kolekcja) {
  334.         String[] kolumny = {"Waluta:", "Wartość"};
  335.         modelTabeli = new DefaultTableModel(kolumny, 0);
  336.         tabela = new JTable(modelTabeli);
  337.         tabela.setRowSelectionAllowed(false);
  338.         this.kolekcja = kolekcja;
  339.         setViewportView(tabela);
  340.         setPreferredSize(new Dimension(150, 200));
  341.         setBorder(BorderFactory.createTitledBorder("Banknoty"));
  342.     }
  343.  
  344.     /* Metodďż˝ refresh() naleďż˝y wywoďż˝aďż˝ po kaďż˝dej
  345.      * modyfikacji zawartoďż˝ci wyďż˝wietlanej kolejcji
  346.      */
  347.     void refresh() {
  348.         modelTabeli.setRowCount(0);
  349.         for (Banknot p : kolekcja) {
  350.             String[] s = {p.waluta, "" + p.wartosc};
  351.             modelTabeli.addRow(s);
  352.         }
  353.     }
  354. } // koniec klasy WidokKolekcji
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement