Advertisement
Guest User

Untitled

a guest
Nov 18th, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.21 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. String napis1 = text1.getText();
  119. float liczba1 = Float.valueOf(napis1);
  120.  
  121. String napis2 = text2.getText();
  122. float liczba2 = Float.valueOf(napis2);
  123.  
  124. /* if(e.getActionCommand().equals("+")){ //tak rozpoznajemy który przycisk został naciśnięty
  125. label3.setText("Wynik: " + (liczba1 + liczba2));
  126. }
  127. if(e.getActionCommand().equals("-")){ //tak rozpoznajemy który przycisk został naciśnięty
  128. label3.setText("Wynik: " + (liczba1 - liczba2));
  129. }
  130. if(e.getActionCommand().equals("*")){ //tak rozpoznajemy który przycisk został naciśnięty
  131. label3.setText("Wynik: " + (liczba1 * liczba2));
  132. }
  133. if(e.getActionCommand().equals("/")){ //tak rozpoznajemy który przycisk został naciśnięty
  134. label3.setText("Wynik: " + (liczba1 / liczba2));
  135. } */
  136. Object z = e.getSource();
  137. if(z==combo)
  138. {
  139. String wyb = combo.getSelectedItem().toString();
  140. if(wyb.equals("+"))
  141. label3.setText("Wynik: " + (liczba1 + liczba2));
  142. if(wyb.equals("-"))
  143. label3.setText("Wynik: " + (liczba1 - liczba2));
  144. if(wyb.equals("*"))
  145. label3.setText("Wynik: " + (liczba1 * liczba2));
  146. if(wyb.equals("/"))
  147. label3.setText("Wynik: " + (liczba1 / liczba2));
  148. }
  149.  
  150. /*
  151. Gdyby zaszła potrzeba konwersji napisu na liczbę, można użyć funkcji statycznych
  152. tzw. klas opakowujących typy podstawowe. Np. dla typu "double" będzie to klasa "Double":
  153. double liczba = Double.valueOf(napis);
  154. Konwersji w drugą stronę dokonujemy analogicznie:
  155. String napis = Double.toString(liczba);
  156. Uwaga! Za każdym razem należy pamiętać o obłudze wyjątków, jakie rzucają zastosowane funkcje!
  157. */
  158.  
  159. }
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement