SHARE
TWEET

Untitled

a guest Jan 22nd, 2019 58 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top