Developer от Бога

DV

четверг, 6 июля 2017 г.

Java. Графики функций

Перейдем к более практичным задачам. В ранее рассматриваемых статьях достаточно информации чтоб сделать программу которая выводит графики функций. Основная задача и самая трудная, это придумать алгоритм построения графиков, а также перемещения по нему и других полезных методов визуализации. Приложение будет графическим, поэтому будут использоваться библиотеки swing и awt для его визуализации. Для начала рассмотрим код, потом разберемся что к чему:

  1. // Главный класс с которого начинается программа Graph_26_02
  2. import java.awt.BorderLayout;
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.FlowLayout;
  7. import java.awt.Graphics;
  8. import javax.swing.JButton;
  9. import javax.swing.JFrame;
  10. import javax.swing.JPanel;
  11. public class Graph_26_02 extends JFrame{
  12. buttonpanel btp= new buttonpanel();
  13. static Graph_26_02 gp;
  14. scale sc=new scale();
  15. RadioBut rb=new RadioBut();
  16. Graph_26_02() {
  17. super("Graphics Function");
  18. Container head_container = getContentPane();
  19. Container container_graph = new Container();
  20. head_container.setLayout(new BorderLayout());
  21. sc.setSize(800,800);
  22. container_graph.add(sc);
  23. head_container.add(container_graph,BorderLayout.CENTER);
  24. head_container.add(rb,BorderLayout.SOUTH);
  25. head_container.add(btp,BorderLayout.NORTH);
  26. setSize(850,900);
  27. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  28. setResizable(false);
  29. setVisible(true);
  30. }
  31. public static void repaintf(){
  32. gp.repaint();
  33. }
  34. public static void main(String[] args) {
  35. gp=new Graph_26_02();
  36. }
  37. }
Класс buttonpanel создает кнопки, и применяет к ним "слушаетелей" которые будут реагировать на события.


  1. public class buttonpanel extends JPanel{
  2. eventbut evtb = new eventbut();
  3. static JButton plus=new JButton("zoom +");
  4. static JButton minus=new JButton("zoom -");
  5. static JButton left=new JButton("<<");
  6. static JButton right=new JButton(">>");
  7. static JButton top=new JButton("top");
  8. static JButton down=new JButton("down");
  9. static JButton hight=new JButton("vertex +");
  10. static JButton lower=new JButton("vertex -");
  11. static JButton reset=new JButton("reset");
  12. FlowLayout flbutton=new FlowLayout();
  13. buttonpanel(){
  14. setLayout(flbutton);
  15. this.add(left);
  16. left.addActionListener(evtb);
  17. this.add(plus);
  18. plus.addActionListener(evtb);
  19. this.add(top);
  20. top.addActionListener(evtb);
  21. this.add(down);
  22. down.addActionListener(evtb);
  23. this.add(minus);
  24. minus.addActionListener(evtb);
  25. this.add(right);
  26. right.addActionListener(evtb);
  27. this.add(hight);
  28. hight.addActionListener(evtb);
  29. this.add(lower);
  30. lower.addActionListener(evtb);
  31. this.add(reset);
  32. reset.addActionListener(evtb);
  33. }
  34. }

Класс RadioBut будет отображать выбраный график.


  1. public class RadioBut extends JPanel{
  2. eventbut eb=new eventbut();
  3. JRadioButton pr=new JRadioButton("Parabola");
  4. JRadioButton hp=new JRadioButton("Hiperbola");
  5. JRadioButton ln=new JRadioButton("Line");
  6. RadioBut(){
  7. this.add(ln);
  8. ln.addActionListener(eb);
  9. this.add(pr);
  10. pr.addActionListener(eb);
  11. this.add(hp);
  12. hp.addActionListener(eb);
  13. }
  14. }

Комментариев нет:

Отправить комментарий