Перейдем к более практичным задачам. В
ранее рассматриваемых статьях
достаточно информации чтоб сделать программу которая выводит графики
функций. Основная задача и самая трудная, это придумать алгоритм
построения графиков, а также перемещения по нему и других полезных
методов визуализации. Приложение будет графическим, поэтому будут
использоваться библиотеки swing и awt для его визуализации. Для начала
рассмотрим
код, потом разберемся что к чему:
- // Главный класс с которого начинается программа Graph_26_02
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.FlowLayout;
- import java.awt.Graphics;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- public class Graph_26_02 extends JFrame{
- buttonpanel btp= new buttonpanel();
- static Graph_26_02 gp;
- scale sc=new scale();
- RadioBut rb=new RadioBut();
- Graph_26_02() {
- super("Graphics Function");
- Container head_container = getContentPane();
- Container container_graph = new Container();
- head_container.setLayout(new BorderLayout());
- sc.setSize(800,800);
- container_graph.add(sc);
- head_container.add(container_graph,BorderLayout.CENTER);
- head_container.add(rb,BorderLayout.SOUTH);
- head_container.add(btp,BorderLayout.NORTH);
- setSize(850,900);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- setResizable(false);
- setVisible(true);
- }
- public static void repaintf(){
- gp.repaint();
- }
- public static void main(String[] args) {
- gp=new Graph_26_02();
- }
- }
Класс buttonpanel создает кнопки, и применяет к ним "слушаетелей" которые будут реагировать на события.
- public class buttonpanel extends JPanel{
- eventbut evtb = new eventbut();
- static JButton plus=new JButton("zoom +");
- static JButton minus=new JButton("zoom -");
- static JButton left=new JButton("<<");
- static JButton right=new JButton(">>");
- static JButton top=new JButton("top");
- static JButton down=new JButton("down");
- static JButton hight=new JButton("vertex +");
- static JButton lower=new JButton("vertex -");
- static JButton reset=new JButton("reset");
- FlowLayout flbutton=new FlowLayout();
- buttonpanel(){
- setLayout(flbutton);
- this.add(left);
- left.addActionListener(evtb);
- this.add(plus);
- plus.addActionListener(evtb);
- this.add(top);
- top.addActionListener(evtb);
- this.add(down);
- down.addActionListener(evtb);
- this.add(minus);
- minus.addActionListener(evtb);
- this.add(right);
- right.addActionListener(evtb);
- this.add(hight);
- hight.addActionListener(evtb);
- this.add(lower);
- lower.addActionListener(evtb);
- this.add(reset);
- reset.addActionListener(evtb);
- }
- }
Класс RadioBut будет отображать выбраный график.
- public class RadioBut extends JPanel{
- eventbut eb=new eventbut();
- JRadioButton pr=new JRadioButton("Parabola");
- JRadioButton hp=new JRadioButton("Hiperbola");
- JRadioButton ln=new JRadioButton("Line");
- RadioBut(){
- this.add(ln);
- ln.addActionListener(eb);
- this.add(pr);
- pr.addActionListener(eb);
- this.add(hp);
- hp.addActionListener(eb);
- }
- }
Комментариев нет:
Отправить комментарий