Kalkulator.java

Poniższe materiały zostały tu kiedyś umieszczone na potrzeby mojej grupy ze studiów. Na 99,9% nie posiadam żadnych dodatkowych materiałów związanych z tym tematem ani nie gwarantuję 100% poprawności.

Banalny program, który liczy sumę, różnicę, iloczyn i iloraz dwóch liczb.

import javax.swing.*; // wczytanie biblioteki graficznej swing
import java.awt.*; // wczytanie biblioteki graficznej awt
import java.awt.event.*;

public class Kalkulator
{
  
  public static void main(String args[])
  {
    Okno okno=new Okno(); // tworzymy nowy obiekt typu Okno (dalej będziemy o nim mówić "okienko"), który zaraz stworzymy
    okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // zamknięcie okienka ma być jednoznaczne z zamknięciem programu
    okno.setVisible(true); // nasze okienko ma być widoczne
  }
}  

class Okno extends JFrame // tworzymy nowy obiekt "Okno"
{
  public Okno() // "konstruktor" czyli główna funkcja danej klasy o takiej samej nazwie co klasa. Określa właściwości okienka
  {
    setTitle("Kalkulator"); // Nadajemy nazwę okienka (będzie się wyświetlać na niebieskim pasku programu)
    setSize(160,250); // Określamy wymiary okienka w pikselach (160 szerokości, 250 wysokości)
    
    
    MojPanel p=new MojPanel(); // Tworzymy nowy obiekt typu "MójPanel" (dalej nazywamy go "panel"), który zaraz stworzymy
    Container powzaw=getContentPane(); // tworzymy obiekt "powzaw" który stanowi powierzchnię okienka. 
    powzaw.add(p); // do tej powierzchni dodajemy panel, który stworzyliśmy dwie linijki wyżej
  }
}
  
class MojPanel extends JPanel // tworzymy nowy obiekt MójPanel
{
  
  JTextField a;     // definiujemy zmienną "a" typu "pole tekstowe" dla pierwszej liczby
  JTextField b;     // definiujemy zmienną "b" typu "pole tekstowe" dla drugiej liczby
  JTextField wynik; // definiujemy zmienną "wynik" typu "pole tekstowe" dla wyniku
  
  // Zmienne te definiujemy bezpośrednio w klasie, żeby były dostępne dla wszystkich funkcji w tej klasie
  
  public MojPanel() // "konstruktor" czyli główna funkcja danej klasy o takiej samej nazwie co klasa. Tu tworzymy fizycznie nasz "panel"
  {
    setLayout(new FlowLayout(FlowLayout.LEFT)); // określamy układ elementów w panelu. 
                                                // Tu: FlowLayout, czyli wszystkie elementy są wyrównane do lewej strony
                                                // każdy kolejny element będzie "doklejany" do poprzedniego z prawej strony

  
    JLabel lab1=new JLabel("Liczba a");    // Tworzymy etykietkę tekstową "lab1"
    add(lab1);                             // i dodajemy ją do naszego panelu
    
    a=new JTextField("",12);               // Tworzymy nowe pole tekstowe przypisane do zdefiniowanej wcześniej zmiennej "a"
    add(a);                                // i dodajemy go do naszego panelu
    
    JLabel lab2=new JLabel("Liczba b");    // Tworzymy etykietkę tekstową "lab2"
    add(lab2);                             // i dodajemy ją do naszego panelu
    
    b=new JTextField("",12);               // Tworzymy nowe pole tekstowe przypisane do zdefiniowanej wcześniej zmiennej "b"
    add(b);                                // i dodajemy go do naszego panelu
        
    
    JButton plus=new JButton("+");        // Tworzymy przycisk " + " o nazwie "plus"
    add(plus);                            // i dodajemy go do naszego panelu
    
    JButton minus=new JButton("-");       // Tworzymy przycisk " - " o nazwie "minus"
    add(minus);                           // i dodajemy go do naszego panelu
    
    JButton mnozenie=new JButton("*");    // Tworzymy przycisk " * " o nazwie "mnozenie"
    add(mnozenie);                        // i dodajemy go do naszego panelu
    
    JButton dzielenie=new JButton("/");   // Tworzymy przycisk " / " o nazwie "dzielenie"
    add(dzielenie);                       // i dodajemy go do naszego panelu
    
    // Mamy już elementy kalkulatora, teraz musimy stworzyć coś, co będzie ciągle monitorowało
    // co też się dzieje z naszymi przyciskami. Do każdego z nich stworzymy więc specjalny "podsłuch"
    
    ActionListener sl1=new Dodaj();       // Tworzymy "podsłuch" o nazwie "sl1" w postaci funkcji Dodaj()
    plus.addActionListener(sl1);          // i podpinamy go pod przycisk o nazwie "plus"
    
    ActionListener sl2=new Odejmij();     // Tworzymy "podsłuch" o nazwie "sl2" w postaci funkcji Odejmij()
    minus.addActionListener(sl2);         // i podpinamy go pod przycisk o nazwie "minus" 
    
    ActionListener sl3=new Pomnoz();      // Tworzymy "podsłuch" o nazwie "sl3" w postaci funkcji Pomnoz()
    mnozenie.addActionListener(sl3);      // i podpinamy go pod przycisk o nazwie "mnozenie"  
    
    ActionListener sl4=new Podziel();     // Tworzymy "podsłuch" o nazwie "sl4" w postaci funkcji Podziel()
    dzielenie.addActionListener(sl4);     // i podpinamy go pod przycisk o nazwie "dzielenie" 
    
    
    JLabel lab3=new JLabel("wynik");      // Tworzymy etykietkę tekstową "lab1"
    add(lab3);                            // i dodajemy ją do naszego panelu
    
    wynik=new JTextField("",12);          // Tworzymy nowe pole tekstowe przypisane do zdefiniowanej wcześniej zmiennej "wynik"
    add(wynik);                           // i dodajemy go do naszego panelu
    
    }
  
  class Dodaj implements ActionListener   
  {
    public void actionPerformed(ActionEvent zdarzenie) // wykryj zdarzenie - kliknięcie
    {
      long n=Integer.parseInt(a.getText()); // Pobierz zawartość pola tekstowego "a", zamień na liczbę typu "long" i przypisz do zmiennej "n"
      long m=Integer.parseInt(b.getText()); // Pobierz zawartość pola tekstowego "b", zamień na liczbę typu "long" i przypisz do zmiennej "m"
      long suma=n+m; // wykonaj działanie
      wynik.setText(""+suma+" "); // podstaw wartość do pola tekstowego "wynik"
    }
  }
  
    class Odejmij implements ActionListener
  {
    public void actionPerformed(ActionEvent zdarzenie) // wykryj zdarzenie - kliknięcie
    {
      long n=Integer.parseInt(a.getText()); // Pobierz zawartość pola tekstowego "a", zamień na liczbę typu "long" i przypisz do zmiennej "n"
      long m=Integer.parseInt(b.getText()); // Pobierz zawartość pola tekstowego "b", zamień na liczbę typu "long" i przypisz do zmiennej "m"
      long roznica=n-m; // wykonaj działanie
      wynik.setText(""+roznica); // podstaw wartość do pola tekstowego "wynik"
    }
  }
    
  class Pomnoz implements ActionListener
  {
    public void actionPerformed(ActionEvent zdarzenie) // wykryj zdarzenie - kliknięcie
    {
      long n=Integer.parseInt(a.getText()); // Pobierz zawartość pola tekstowego "a", zamień na liczbę typu "long" i przypisz do zmiennej "n"
      long m=Integer.parseInt(b.getText()); // Pobierz zawartość pola tekstowego "b", zamień na liczbę typu "long" i przypisz do zmiennej "m"
      long iloczyn=n*m; // wykonaj działanie
      wynik.setText(""+iloczyn); // podstaw wartość do pola tekstowego "wynik"
    }
  }
      
  class Podziel implements ActionListener
  {
    public void actionPerformed(ActionEvent zdarzenie) // wykryj zdarzenie - kliknięcie
    {
      long n=Integer.parseInt(a.getText()); // Pobierz zawartość pola tekstowego "a", zamień na liczbę typu "long" i przypisz do zmiennej "n"
      long m=Integer.parseInt(b.getText()); // Pobierz zawartość pola tekstowego "b", zamień na liczbę typu "long" i przypisz do zmiennej "m"
      float iloraz=(float)n/m; // wykonaj działanie. Zwróć uwagę na typ "float". (float) przed działaniem zamienia wartość na liczbę zmiennoprzecinkową
                               // przez co poprawnie wyświetla ułamek
      wynik.setText(""+iloraz); // podstaw wartość do pola tekstowego "wynik"
    }
  }
  
  
  
  
  
  
}



Najnowsze posty:


Najnowsze komentarze:

koko: Czesc wszystkim, a ja mam pytanie, mieszkam w uk i zalozylem pay pala,2 dni temu dokonalem tranzakcji i zaplacilem z... więcej »

Meh: Witam, Patrząc na recenzje w Amazon UK, ta nawigacja jest cieniutka. Jak jest z gubieniem sygnału GPS? Bo na to... więcej »

janusz walecki: Kupiłem Router Netgear N600 WNDR3700v2 w celu wykonania domowej sieci Wi-fi. Obecnie korzystam z modemu... więcej »

Robisz zakupy w internecie?
Pomagaj ZA DARMO przy okazji
2600 organizacji społecznych i 800 sklepów