Advertisement
Guest User

Untitled

a guest
Nov 18th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.30 KB | None | 0 0
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6. package mieszacz;
  7.  
  8. import java.awt.Color;
  9. import java.awt.Container;
  10. import java.awt.Dimension;
  11. import java.awt.FlowLayout;
  12. import java.awt.event.ActionEvent;
  13. import java.awt.event.ActionListener;
  14. import javax.swing.BoxLayout;
  15. import javax.swing.JButton;
  16. import javax.swing.JComboBox;
  17. import javax.swing.JFrame;
  18. import javax.swing.JLabel;
  19. import javax.swing.JOptionPane;
  20. import javax.swing.JPanel;
  21. import javax.swing.JTextField;
  22.  
  23. /**Całe GUI i interfejs ActionListener implementujemy w jednej klasie. Dzięki
  24.  * temu możemy łatwo odwoływać się do wszystkich kontrolek zadeklarowanych jako
  25.  * pola klasy z wnętrza funkcji ActionPerformed.
  26.  *
  27.  * @author Michał Lewandowski
  28.  */
  29. public class Gui implements ActionListener{
  30.     //Wszystkie kontrolki jako pola klasy. Dzięki temu "widać" je z każdej funkcji,
  31.     //w tym też z ActionPerformed.
  32.         JFrame frame;
  33.         JTextField text1, text2;
  34.         JLabel label1, label2, label3;
  35.         JButton but1, but2, but3, but4;
  36.         Container mainPane;
  37.         JPanel panel1, panel2, panel3, panel4, panel5;
  38.         JComboBox combo;
  39.        
  40.     public Gui() { //W konstruktorze tworzymy GUI
  41.         frame = new JFrame("Kalkulator");
  42.         frame.getContentPane().setBackground(Color.yellow);
  43.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  44.         mainPane = frame.getContentPane(); //pobranie referencji głównego panelu ramki
  45.         mainPane.setLayout(new BoxLayout(mainPane, BoxLayout.Y_AXIS)); //dla mainPane użyjemy BoxLayout
  46.         frame.setMinimumSize(new Dimension(300,100));
  47.        
  48. //Cztery panele dla naszych kontrolek
  49.    //     String[] wybor = {"+","-","*","/"};
  50.         combo = new JComboBox ();
  51.         combo.addItem("+");
  52.         combo.addItem("-");
  53.         combo.addItem("*");
  54.         combo.addItem("/");
  55.         combo.addActionListener(this);
  56.         combo.setPreferredSize(new Dimension(100,25));
  57.         panel1 = new JPanel(new FlowLayout(FlowLayout.CENTER));
  58.  //       panel1.setBackground(Color.yellow);
  59.         panel4 = new JPanel(new FlowLayout(FlowLayout.CENTER));
  60.  //       panel4.setBackground(Color.red);
  61.         panel2 = new JPanel(new FlowLayout(FlowLayout.CENTER));
  62.  //       panel2.setBackground(Color.yellow);
  63.         panel3 = new JPanel(new FlowLayout(FlowLayout.LEFT));
  64.   //      panel3.setBackground(Color.red);
  65.         panel3 = new JPanel(new FlowLayout(FlowLayout.LEFT));
  66.  //       panel3.setBackground(Color.red);
  67.         panel5 = new JPanel(new FlowLayout(FlowLayout.LEFT));
  68.         mainPane.add(panel1);
  69.         mainPane.add(panel4);
  70.         mainPane.add(panel2);
  71.         mainPane.add(panel5);
  72.         mainPane.add(panel3);
  73.        
  74.         //Dodajemy kontrolki
  75.         label1 = new JLabel("Pierwsza liczba:");
  76.         label1.setForeground(new Color(15,58,150));
  77.         text1 = new JTextField(15);
  78.         panel1.add(label1);
  79.         panel1.add(text1);
  80.         label2 = new JLabel("Druga liczba:");
  81.         label2.setForeground(new Color(115,58,10));
  82.         text2 = new JTextField(15);
  83.         panel4.add(label2);
  84.         panel4.add(text2);
  85.   /*      but1 = new JButton("+");
  86.         but1.setForeground(Color.RED);
  87.         but1.addActionListener(this); //"this" bo przycisk i obsługa ActionListener są w tej samej klasie
  88.         but2 = new JButton("-");
  89.         but2.setForeground(Color.GREEN);
  90.         but2.addActionListener(this);
  91.         but3 = new JButton("*");
  92.         but3.setForeground(Color.BLUE);
  93.         but3.addActionListener(this);
  94.         but4 = new JButton("/");
  95.         but4.setForeground(Color.ORANGE);
  96.         but4.addActionListener(this);*/
  97.         panel5.add(combo);
  98.         label3 = new JLabel("Wynik:");
  99.       //  label3.setForeground(new Color(200,200,200));
  100.       /*  panel2.add(but1);
  101.         panel2.add(but2);
  102.         panel2.add(but3);
  103.         panel2.add(but4);*/
  104.        
  105.         panel3.add(label3);
  106.        
  107.         //Wyświetlenie GUI na ekranie
  108.         frame.pack();
  109.         frame.setVisible(true);
  110.     }
  111.  
  112.     /* Obsługę zdarzeń implementujemy w tej samej klasie co GUI. Dzięki temu mamy bezpośredni
  113.     dostęp do wszystkich kontrolek zadeklarowanych jako pola klasy.*/
  114.     @Override
  115.     public void actionPerformed(ActionEvent e) {
  116.  
  117.        
  118.         SpinnerModel model=new SpinnerNumberModel(0,Double.MIN_VALUE,Double.MAX_VALUE,0.1);
  119.         JSpinner napis1=new JSpinner(model);
  120.         float liczba1=(float)napis1.getValue();
  121.        
  122.         String napis2 = text2.getText();
  123.         float liczba2 =  Float.valueOf(napis2);
  124.        
  125.  /*    if(e.getActionCommand().equals("+")){ //tak rozpoznajemy który przycisk został naciśnięty
  126.          label3.setText("Wynik: " + (liczba1 + liczba2));
  127.      }
  128.      if(e.getActionCommand().equals("-")){ //tak rozpoznajemy który przycisk został naciśnięty
  129.          label3.setText("Wynik: " + (liczba1 - liczba2));
  130.      }
  131.      if(e.getActionCommand().equals("*")){ //tak rozpoznajemy który przycisk został naciśnięty
  132.          label3.setText("Wynik: " + (liczba1 * liczba2));
  133.      }
  134.      if(e.getActionCommand().equals("/")){ //tak rozpoznajemy który przycisk został naciśnięty
  135.          label3.setText("Wynik: " + (liczba1 / liczba2));
  136.       } */
  137.       Object z = e.getSource();
  138.      if(z==combo)
  139.      {
  140.          String wyb = combo.getSelectedItem().toString();
  141.          if(wyb.equals("+"))
  142.          label3.setText("Wynik: " + (liczba1 + liczba2));
  143.          if(wyb.equals("-"))
  144.          label3.setText("Wynik: " + (liczba1 - liczba2));
  145.          if(wyb.equals("*"))
  146.          label3.setText("Wynik: " + (liczba1 * liczba2));
  147.          if(wyb.equals("/"))
  148.          label3.setText("Wynik: " + (liczba1 / liczba2));
  149.      }  
  150.  
  151.      /*
  152.      Gdyby zaszła potrzeba konwersji napisu na liczbę, można użyć funkcji statycznych
  153.      tzw. klas opakowujących typy podstawowe. Np. dla typu "double" będzie to klasa "Double":
  154.      double liczba =  Double.valueOf(napis);
  155.      Konwersji w drugą stronę dokonujemy analogicznie:
  156.      String napis = Double.toString(liczba);
  157.      Uwaga! Za każdym razem należy pamiętać o obłudze wyjątków, jakie rzucają zastosowane funkcje!
  158.      */
  159.    
  160.     }
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement