Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.13 KB | None | 0 0
  1. import java.awt.*;
  2. import java.awt.event.*;
  3.  
  4. class PlotFrame extends Frame{
  5. PlotFrame(int H, int W){
  6. setTitle("График функции");
  7. setBounds(100,50,W,H);
  8. setBackground(Color.GRAY);
  9. setLayout(null);
  10. Font f = new Font("Arial",Font.BOLD,11);
  11. setFont(f);
  12. Bpanel BPn1=new Bpanel(6,25,W/4,H-30);
  13. add(BPn1);
  14. PPanel PPn1 = new PPanel(W/4+10,25,3*W/4-15,H-120,BPn1);
  15. add(PPn1);
  16. HPanel HPn1=new HPanel(W/4+10,H-90,3*W/4-15,85);
  17. add(HPn1);
  18. addWindowListener(new WindowAdapter() {
  19. @Override
  20. public void windowClosing(WindowEvent e) {
  21. System.exit(0);
  22. }
  23. });
  24. BPn1.B1.addActionListener(new Button1Pressed(BPn1,PPn1));
  25. BPn1.B2.addActionListener(new Button2Pressed());
  26. BPn1.Cb[3].addItemListener(new cbChanged(BPn1));
  27. setResizable(false);
  28.  
  29. }
  30. }
  31.  
  32. class Bpanel extends Panel{
  33. public Label[] L;
  34. public CheckboxGroup CbG;
  35. public Checkbox[] Cb;
  36. public Choice Ch;
  37. public TextField TF;
  38. public Button B1,B2;
  39. Bpanel(int x,int y, int W, int H){
  40. setLayout(null);
  41. setBounds(x,y,W,H);
  42. setBackground(Color.LIGHT_GRAY);
  43. L=new Label[3];
  44. L[0]=new Label("Выбор цвета: ",Label.CENTER);
  45. L[0].setFont(new Font("Arial",Font.BOLD,12));
  46. L[0].setBounds(5,5,getWidth()-10,30);
  47. add(L[0]);
  48. CbG=new CheckboxGroup();
  49. Cb = new Checkbox[4];
  50. Cb[0]=new Checkbox(" Красный",CbG,true);
  51. Cb[1]=new Checkbox(" Синий",CbG,false);
  52. Cb[2]=new Checkbox(" Черный",CbG,false);
  53. Cb[3]=new Checkbox(" Сетка",true);
  54. for (int i = 0; i < 4; i++) {
  55. Cb[i].setBounds(5,30+i*25,getWidth()-10,30);
  56. add(Cb[i]);
  57. }
  58. Ch=new Choice();
  59. Ch.add("Зеленый");
  60. Ch.add("Желтый");
  61. Ch.add("Серый");
  62. Ch.setBounds(20,140,getWidth()-25,30);
  63. add(Ch);
  64. L[1]=new Label("Интервал по X:",Label.CENTER);
  65. L[1].setBounds(5,220,getWidth()-10,30);
  66. L[1].setFont(new Font("Arial",Font.BOLD,12));
  67. add(L[1]);
  68. L[2]=new Label("От x=0 до x=:",Label.CENTER);
  69. L[2].setBounds(5,250,70,20);
  70. add(L[2]);
  71. TF = new TextField("10");
  72. TF.setBounds(75,250,45,20);
  73. add(TF);
  74. B1=new Button("Нарисовать");
  75. B2=new Button("Закрыть");
  76. B1.setBounds(5,getHeight()-75,getWidth()-10,30);
  77. B2.setBounds(5,getHeight()-35,getWidth()-10,30);
  78. add(B1);
  79. add(B2);
  80. }
  81. }
  82.  
  83. class PPanel extends Panel{
  84. public Plotter G;
  85. class Plotter{
  86. private double Xmin=0,Xmax=0,Ymin=0,Ymax=1.0;
  87. private boolean status;
  88. private Color clr;
  89. private Color gclr;
  90. Plotter(Bpanel P){
  91. try{
  92. Xmax=Double.valueOf(P.TF.getText());
  93. }
  94. catch (NumberFormatException e){
  95. P.TF.setText("10");
  96. Xmax=10;
  97. }
  98. status=P.Cb[3].getState();
  99. switch (P.Ch.getSelectedIndex()){
  100. case 0:
  101. gclr=Color.GREEN;
  102. break;
  103. case 1:
  104. gclr=Color.YELLOW;
  105. break;
  106. default:
  107. gclr=Color.GRAY;
  108. }
  109. String name = P.CbG.getSelectedCheckbox().getLabel();
  110. if(name.equalsIgnoreCase(" Красный")) clr=Color.RED;
  111. else if(name.equalsIgnoreCase(" Синий")) clr=Color.BLUE;
  112. else clr=Color.BLACK;
  113. }
  114. private double f(double x){
  115. return (1+Math.sin(x))/(1+Math.abs(x));
  116. }
  117. public Plotter remember(Bpanel P){
  118. return new Plotter(P);
  119. }
  120. public void plot(Graphics Fig){
  121. int H,W,h,w,s=20;
  122. H=getHeight();
  123. W=getWidth();
  124. h=H-2*s;
  125. w=W-2*s;
  126. Fig.clearRect(0,0,W,H);
  127. int k,nums=10;
  128. Fig.setColor(Color.BLACK);
  129. Fig.drawLine(s,s,s,h*s);
  130. Fig.drawLine(s,s+h,s+w,s+h);
  131. for(k=0;k<=nums;k++){
  132. Fig.drawLine(s+k*w/nums,s+h,s+k*w/nums,s+h+5);
  133. Fig.drawLine(s-5,s+k*h/nums,s,s+k*h/nums);
  134. Fig.drawString(Double.toString(Xmin+k*(Xmax-Xmin)/nums),s+k*w/nums-5,s+h+15);
  135. Fig.drawString(Double.toString(Xmin+k*(Xmax-Xmin)/nums),s-17,s+h-1-k*h/nums);
  136. }
  137. if(status){
  138. Fig.setColor(gclr);
  139. for(k=1;k<=nums;k++){
  140. Fig.drawLine(s+k*w/nums,s,s+k*w/nums,h+s);
  141. Fig.drawLine(s,s+(k-1)*h/nums,s+w,s+(k-1)*h/nums);
  142. }
  143. }
  144. Fig.setColor(clr);
  145. double dx=(Xmax-Xmin)/w,dy=(Ymax-Ymin)/h;
  146. double x1,x2,y1,y2;
  147. int h1,h2,w1,w2;
  148. x1=Xmin;
  149. y1=f(x1);
  150. w1=s;
  151. h1=h+s-(int)Math.round(y1/dy);
  152. int step=5;
  153. for(int i=step;i<=w;i+=step){
  154. x2=i*dx;
  155. y2=f(x2);
  156. w2=s+(int)Math.round(x2/dx);
  157. h2=h+s-(int)Math.round(y2/dy);
  158. Fig.drawLine(w1,h1,w2,h2);
  159. Fig.drawRect(w1-2,h1-2,4,4);
  160. x1=x2;
  161. y1=y2;
  162. w1=w2;
  163. h1=h2;
  164. }
  165. }
  166. }
  167. PPanel(int x,int y,int W,int H,Bpanel P){
  168. G=new Plotter(P);
  169. setBackground(Color.WHITE);
  170. setBounds(x,y,W,H);
  171. }
  172. public void paint(Graphics g){
  173. G.plot(g);
  174. }
  175. }
  176.  
  177. class HPanel extends Panel{
  178. public Label L;
  179. public TextArea TA;
  180. HPanel(int x,int y,int W,int H){
  181. setBackground(Color.LIGHT_GRAY);
  182. setBounds(x,y,W,H);
  183. setLayout(null);
  184. L=new Label("Справка",Label.CENTER);
  185. L.setBounds(0,0,W,20);
  186. add(L);
  187. TA = new TextArea(" График функции ");
  188. TA.setFont(new Font("Serif",Font.PLAIN,15));
  189. TA.setBounds(5,20,W-10,60);
  190. TA.setEditable(false);
  191. add(TA);
  192. }
  193. }
  194.  
  195. class Button1Pressed implements ActionListener{
  196. private Bpanel P1;
  197. private PPanel P2;
  198. Button1Pressed(Bpanel P1, PPanel P2){
  199. this.P1=P1;
  200. this.P2=P2;
  201. }
  202. public void actionPerformed(ActionEvent ae){
  203. P2.G=P2.G.remember(P1);
  204. P2.G.plot(P2.getGraphics());
  205. }
  206. }
  207.  
  208. class Button2Pressed implements ActionListener{
  209. public void actionPerformed(ActionEvent ae){
  210. System.exit(0);
  211. }
  212. }
  213.  
  214. class cbChanged implements ItemListener{
  215. private Choice ch;
  216. cbChanged(Bpanel P){
  217. this.ch=P.Ch;
  218. }
  219. public void itemStateChanged(ItemEvent ie){
  220. ch.setEnabled(ie.getStateChange()==ie.SELECTED);
  221. }
  222. }
  223.  
  224. class MyFrame{
  225. public static void main(String[] args) {
  226. PlotFrame frame = new PlotFrame(400,500);
  227. frame.setVisible(true);
  228.  
  229. }
  230. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement