Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.34 KB | None | 0 0
  1. import java.awt.BorderLayout;
  2. import java.awt.EventQueue;
  3. import javax.swing.*;
  4. import javax.swing.border.EmptyBorder;
  5. import org.jfree.chart.ChartFactory;
  6. import org.jfree.chart.ChartPanel;
  7. import org.jfree.chart.JFreeChart;
  8. import org.jfree.data.xy.XYDataset;
  9. import org.jfree.data.xy.XYSeries;
  10. import org.jfree.data.xy.XYSeriesCollection;
  11.  
  12. import java.awt.event.ActionListener;
  13. import java.awt.event.ActionEvent;
  14. import java.awt.TextArea;
  15. import java.awt.Button;
  16. import java.awt.Font;
  17.  
  18. public class FuzzyWater extends JFrame {
  19.  
  20. private static final long serialVersionUID = 1L;
  21. private JPanel contentPane;
  22. private JFrame levelWindow, rateWindow, valveWindow;
  23. private JTextField result;
  24.  
  25. private double[][] level;
  26. private double[][] rate;
  27. private double[][] valve;
  28. private JLabel labelLevel;
  29. private JTextField levelValue;
  30. private JTextField inflowValue;
  31. private JComboBox slonce;
  32. private String [] slonceList = {"Jest", "Nie ma"};
  33.  
  34. private Timer rolex;
  35. private TextArea textArea;
  36. private TextArea resArea;
  37. private JButton btn_calculate;
  38.  
  39. public void createLevelTerm() {
  40. level = new double [4][31];
  41.  
  42. System.out.println("Term 'level' ");
  43.  
  44. for (int j=0; j<=20; j++)
  45. {
  46. double levelNegative = 0;
  47. double levelZero = 0;
  48. double levelPositive = 0;
  49. double x = ((double)(j-10));
  50. level[0][j] = x;
  51.  
  52. //TERM NEGATIVE
  53. if (x>=(-18) && x<(-10)) {
  54. levelNegative = 1;
  55. }
  56. else if (x>=(-10) && x<=0) {
  57. levelNegative = ((0-(x))/(0-(-10)));
  58. }
  59. else {
  60. levelNegative = 0;
  61. }
  62.  
  63. //TERM ZERO
  64. if (x>=-8 && x<=0){
  65. levelZero = (((x)-(-8))/(0-(-8)));
  66. }
  67. else if (x>0 && x<8) {
  68. levelZero = ((8-(x))/(8-0));
  69. }
  70. else {
  71. levelZero = 0;
  72. }
  73.  
  74. //TERM POSITIVE
  75. if (x>0 && x<10) {
  76. levelPositive = (((x)-0)/(10-0));
  77. }
  78. else if (x>=10 && x<=18) {
  79. levelPositive = 1;
  80. }
  81. else {
  82. levelPositive = 0;
  83. }
  84.  
  85. level [1][j] = levelNegative;
  86. level [2][j] = levelZero;
  87. level [3][j] = levelPositive;
  88.  
  89. System.out.print(level[0][j] + " ");
  90. }
  91. }
  92.  
  93. public void createRateTerm() {
  94. rate = new double [4][31];
  95.  
  96. System.out.println("\nTerm 'rate' ");
  97.  
  98. for (int j=0; j<=10; j++)
  99. {
  100. double rateNegative = 0;
  101. double rateZero = 0;
  102. double ratePositive = 0;
  103. double x = ((double)(j-5)/10);
  104. rate[0][j] = x;
  105.  
  106. //TERM NEGATIVE
  107. if (x>=(-0.9) && x<(-0.5)) {
  108. rateNegative = 1;
  109. }
  110. else if (x>=(-0.5) && x<=0) {
  111. rateNegative = ((0-(x))/(0-(-0.5)));
  112. }
  113. else {
  114. rateNegative = 0;
  115. }
  116.  
  117. //TERM ZERO
  118. if (x>=-0.4 && x<=0){
  119. rateZero = (((x)-(-0.4))/(0-(-0.4)));
  120. }
  121. else if (x>0 && x<0.4) {
  122. rateZero = ((0.4-(x))/(0.4-0));
  123. }
  124. else {
  125. rateZero = 0;
  126. }
  127.  
  128. //TERM POSITIVE
  129. if (x>0 && x<0.5) {
  130. ratePositive = (((x)-0)/(0.5-0));
  131. }
  132. else if (x>=0.5 && x<=0.9) {
  133. ratePositive = 1;
  134. }
  135. else {
  136. ratePositive = 0;
  137. }
  138.  
  139. rate [1][j] = rateNegative;
  140. rate [2][j] = rateZero;
  141. rate [3][j] = ratePositive;
  142.  
  143. System.out.print(rate[0][j] + " ");
  144. }
  145. }
  146.  
  147. public void createValveTerm() {
  148. valve = new double [4][31];
  149.  
  150. System.out.println("\nTerm 'valve' ");
  151.  
  152. for (int j=0; j<=10; j++)
  153. {
  154. double valveNegative = 0;
  155. double valveZero = 0;
  156. double valvePositive = 0;
  157. double x = ((double)(j-5));
  158. valve[0][j] = x;
  159.  
  160. //TERM NEGATIVE
  161. if (x>=(-9) && x<(-5)) {
  162. valveNegative = 1;
  163. }
  164. else if (x>=(-5) && x<=0) {
  165. valveNegative = ((0-(x))/(0-(-5)));
  166. }
  167. else {
  168. valveNegative = 0;
  169. }
  170.  
  171. //TERM ZERO
  172. if (x>=-4 && x<=0){
  173. valveZero = (((x)-(-4))/(0-(-4)));
  174. }
  175. else if (x>0 && x<4) {
  176. valveZero = ((4-(x))/(4-0));
  177. }
  178. else {
  179. valveZero = 0;
  180. }
  181.  
  182. //TERM POSITIVE
  183. if (x>0 && x<5) {
  184. valvePositive = (((x)-0)/(5-0));
  185. }
  186. else if (x>=5 && x<=9) {
  187. valvePositive = 1;
  188. }
  189. else {
  190. valvePositive = 0;
  191. }
  192.  
  193. valve [1][j] = valveNegative;
  194. valve [2][j] = valveZero;
  195. valve [3][j] = valvePositive;
  196.  
  197. System.out.print(valve[0][j] + " ");
  198. }
  199. }
  200.  
  201. private XYDataset createLevelDataset()
  202. {
  203. XYSeriesCollection datasetLevel = new XYSeriesCollection();
  204. XYSeries levelTermNegative = new XYSeries("Negative");
  205. XYSeries levelTermZero = new XYSeries("Empty");
  206. XYSeries levelTermPositive = new XYSeries("Full");
  207.  
  208. for (int i = 0; i <=20; i++)
  209. {
  210. levelTermNegative.add(level[0][i],level[1][i]);
  211. levelTermZero.add(level[0][i],level[2][i]);
  212. levelTermPositive.add(level[0][i],level[3][i]);
  213. }
  214.  
  215. datasetLevel.addSeries(levelTermNegative);
  216. datasetLevel.addSeries(levelTermZero);
  217. datasetLevel.addSeries(levelTermPositive);
  218.  
  219. return datasetLevel;
  220. }
  221.  
  222. private XYDataset createRateDataset()
  223. {
  224. XYSeriesCollection datasetRate = new XYSeriesCollection();
  225. XYSeries rateTermNegative = new XYSeries("Negative");
  226. XYSeries rateTermZero = new XYSeries("Zero");
  227. XYSeries rateTermPositive = new XYSeries("Positive");
  228.  
  229. for (int i = 0; i <=10; i++)
  230. {
  231. rateTermNegative.add(rate[0][i],rate[1][i]);
  232. rateTermZero.add(rate[0][i],rate[2][i]);
  233. rateTermPositive.add(rate[0][i],rate[3][i]);
  234. }
  235.  
  236. datasetRate.addSeries(rateTermNegative);
  237. datasetRate.addSeries(rateTermZero);
  238. datasetRate.addSeries(rateTermPositive);
  239.  
  240. return datasetRate;
  241. }
  242.  
  243. private XYDataset createValveDataset()
  244. {
  245. XYSeriesCollection datasetValve = new XYSeriesCollection();
  246. XYSeries valveTermNegative = new XYSeries("Negative");
  247. XYSeries valveTermZero = new XYSeries("Zero");
  248. XYSeries valveTermPositive = new XYSeries("Positive");
  249.  
  250. for (int i = 0; i <=10; i++)
  251. {
  252. valveTermNegative.add(valve[0][i],valve[1][i]);
  253. valveTermZero.add(valve[0][i],valve[2][i]);
  254. valveTermPositive.add(valve[0][i],valve[3][i]);
  255. }
  256.  
  257. datasetValve.addSeries(valveTermNegative);
  258. datasetValve.addSeries(valveTermZero);
  259. datasetValve.addSeries(valveTermPositive);
  260.  
  261. return datasetValve;
  262. }
  263.  
  264. private JPanel createLevelChartPanel()
  265. {
  266. String chartTitleLevel = "Level";
  267. String xAxisLabelLevel = "Level";
  268. String yAxisLabelLevel = "μ(Level)";
  269. XYDataset datasetLevel = createLevelDataset();
  270. JFreeChart chartLevel = ChartFactory.createXYLineChart(chartTitleLevel, xAxisLabelLevel, yAxisLabelLevel, datasetLevel);
  271. return new ChartPanel(chartLevel);
  272. }
  273.  
  274. private JPanel createRateChartPanel()
  275. {
  276. String chartTitleRate = "Rate";
  277. String xAxisLabelRate = "Rate";
  278. String yAxisLabelRate = "μ(Rate)";
  279. XYDataset datasetRate = createRateDataset();
  280. JFreeChart chartRate = ChartFactory.createXYLineChart(chartTitleRate, xAxisLabelRate, yAxisLabelRate, datasetRate);
  281. return new ChartPanel(chartRate);
  282. }
  283.  
  284. private JPanel createValveChartPanel()
  285. {
  286. String chartTitleValve = "Valve";
  287. String xAxisLabelValve = "Valve";
  288. String yAxisLabelValve = "μ(Valve)";
  289. XYDataset datasetValve = createValveDataset();
  290. JFreeChart chartValve = ChartFactory.createXYLineChart(chartTitleValve, xAxisLabelValve, yAxisLabelValve, datasetValve);
  291. return new ChartPanel(chartValve);
  292. }
  293.  
  294. public void createRules() {
  295.  
  296. rolex = new Timer(1000, new ActionListener() {
  297. @Override
  298. public void actionPerformed(ActionEvent e)
  299. {
  300.  
  301.  
  302. Object o = e.getSource();
  303.  
  304. double checkLevel, checkInflow;
  305.  
  306. if (levelValue.getText().equals("")) {
  307. JOptionPane.showMessageDialog(null, "Pole Stan Zbiornika nie może być puste.");
  308. return;
  309. }
  310.  
  311. if (isDouble(levelValue.getText())) {
  312. checkLevel = Double.parseDouble(levelValue.getText());
  313. } else {
  314. JOptionPane.showMessageDialog(null, "Proszę wprowadzić wartość numeryczną.");
  315. return;
  316. }
  317.  
  318. // Sprawdzenie czy pole tekstowe Przyplyw Wody jest puste oraz czy zostala wpisana liczba.
  319.  
  320. if (inflowValue.getText().equals("")) {
  321. JOptionPane.showMessageDialog(null, "Pole Przypływ Wody nie może być puste.");
  322. return;
  323. }
  324.  
  325. if (isDouble(inflowValue.getText())) {
  326. checkInflow = Double.parseDouble(inflowValue.getText());
  327. } else {
  328. JOptionPane.showMessageDialog(null, "Proszę wprowadzić wartość numeryczną.");
  329. return;
  330. }
  331.  
  332.  
  333. if ((checkLevel >= -10) && (checkLevel <= 10)) {
  334. if ((checkInflow >= -0.5) && (checkInflow <= 0.5)) {
  335. }
  336. else {
  337. JOptionPane.showMessageDialog(null, "Proszę podać wartość w przedziale od -0.5 do 0.5.");
  338. return;
  339. }
  340.  
  341. } else {
  342. JOptionPane.showMessageDialog(null, "Proszę podać wartość w przedziale od -10 do 10.");
  343. return;
  344. }
  345.  
  346.  
  347.  
  348. // ROZMYCIE LEVEL
  349.  
  350. double R1LevelRozmycie = 0;
  351. double R2LevelRozmycie = 0;
  352. double R3LevelRozmycie = 0;
  353.  
  354.  
  355. String levelText = levelValue.getText();
  356. Double dlevelValue = Double.parseDouble(levelText);
  357. for(int i=0; i<=20; i++)
  358. {
  359. if (level[0][i] == dlevelValue) {
  360. R1LevelRozmycie = level[1][i];
  361. R2LevelRozmycie = level[2][i];
  362. R3LevelRozmycie = level[3][i];
  363. }
  364. }
  365.  
  366. // ROZMYCIE NAPŁYW
  367.  
  368. double R1RateRozmycie = 0;
  369. double R2RateRozmycie = 0;
  370. double R3RateRozmycie = 0;
  371.  
  372. String inflowText = inflowValue.getText();
  373. Double dinflowValue = Double.parseDouble(inflowText);
  374.  
  375. for(int i=0; i<=10; i++)
  376. {
  377. if (rate[0][i] == dinflowValue) {
  378. R1RateRozmycie = rate[1][i];
  379. R2RateRozmycie = rate[2][i];
  380. R3RateRozmycie = rate[3][i];
  381. }
  382. }
  383.  
  384. //REGUŁY OGÓLNE
  385. double R1min = Math.min(R1LevelRozmycie, R1RateRozmycie);
  386. double R2min = Math.min(R1LevelRozmycie, R2RateRozmycie);
  387. double R3min = Math.min(R1LevelRozmycie, R3RateRozmycie);
  388.  
  389. double R4min = Math.min(R2LevelRozmycie, R1RateRozmycie);
  390. double R5min = Math.min(R2LevelRozmycie, R2RateRozmycie);
  391. double R6min = Math.min(R2LevelRozmycie, R3RateRozmycie);
  392.  
  393. double R7min = Math.min(R3LevelRozmycie, R1RateRozmycie);
  394. double R8min = Math.min(R3LevelRozmycie, R2RateRozmycie);
  395. double R9min = Math.min(R3LevelRozmycie, R3RateRozmycie);
  396.  
  397. double [][] RLnegRRneg = new double [2][31];
  398. double [][] RLnegRRzer = new double [2][31];
  399. double [][] RLnegRRpos = new double [2][31];
  400. double [][] RLzerRRneg = new double [2][31];
  401. double [][] RLzerRRzer = new double [2][31];
  402. double [][] RLzerRRpos = new double [2][31];
  403. double [][] RLposRRneg = new double [2][31];
  404. double [][] RLposRRzer = new double [2][31];
  405. double [][] RLposRRpos = new double [2][31];
  406.  
  407. double [][] R1R2Max = new double [2][31];
  408. double [][] R3R4Max = new double [2][31];
  409. double [][] R5R6Max = new double [2][31];
  410. double [][] R7R8Max = new double [2][31];
  411.  
  412. double [][] R12R34Max = new double [2][31];
  413. double [][] R56R78Max = new double [2][31];
  414.  
  415. double [][] R1234R5678Max = new double [2][31];
  416. double [][] R9Max = new double [2][31]; //KOŃCOWE MAKSIMUM
  417.  
  418. double licznikValve = 0;
  419. double mianownikValve = 0;
  420. double metodaResult = 0;
  421.  
  422. for(int i=0; i<=10; i++)
  423. {
  424. //OD 1 DO 9 TO CO NA KARTCE (LICZENIE MINIMUM)
  425. double x = ((double)(i-5));
  426. RLnegRRneg[0][i] = x;
  427. RLnegRRneg[1][i] = Math.min(R1min, valve[1][i]);
  428. RLnegRRzer[0][i] = x;
  429. RLnegRRzer[1][i] = Math.min(R2min, valve[1][i]);
  430. RLnegRRpos[0][i] = x;
  431. RLnegRRpos[1][i] = Math.min(R3min, valve[1][i]);
  432. RLzerRRneg[0][i] = x;
  433. RLzerRRneg[1][i] = Math.min(R4min, valve[1][i]);
  434. RLzerRRzer[0][i] = x;
  435. RLzerRRzer[1][i] = Math.min(R5min, valve[2][i]);
  436. RLzerRRpos[0][i] = x;
  437. RLzerRRpos[1][i] = Math.min(R6min, valve[3][i]);
  438. RLposRRneg[0][i] = x;
  439. RLposRRneg[1][i] = Math.min(R7min, valve[3][i]);
  440. RLposRRzer[0][i] = x;
  441. RLposRRzer[1][i] = Math.min(R8min, valve[3][i]);
  442. RLposRRpos[0][i] = x;
  443. RLposRRpos[1][i] = Math.min(R9min, valve[3][i]);
  444.  
  445. //MAKSIMUM WARTOSCI OD 1 DO 9
  446. R1R2Max[0][i] = x;
  447. R1R2Max[1][i] = Math.max(RLnegRRneg[1][i], RLnegRRzer[1][i]);
  448. R3R4Max[0][i] = x;
  449. R3R4Max[1][i] = Math.max(RLnegRRpos[1][i], RLzerRRneg[1][i]);
  450. R5R6Max[0][i] = x;
  451. R5R6Max[1][i] = Math.max(RLzerRRzer[1][i], RLzerRRpos[1][i]);
  452. R7R8Max[0][i] = x;
  453. R7R8Max[1][i] = Math.max(RLposRRneg[1][i], RLposRRzer[1][i]);
  454.  
  455. R12R34Max[0][i] = x;
  456. R12R34Max[1][i] = Math.max(R1R2Max[1][i], R3R4Max[1][i]);
  457. R56R78Max[0][i] = x;
  458. R56R78Max[1][i] = Math.max(R5R6Max[1][i], R7R8Max[1][i]);
  459.  
  460. R1234R5678Max[0][i] = x;
  461. R1234R5678Max[1][i] = Math.max(R12R34Max[1][i], R56R78Max[1][i]);
  462.  
  463. R9Max[0][i] = x;
  464. R9Max[1][i] = Math.max(R1234R5678Max[1][i], RLposRRpos[1][i]);
  465.  
  466. //METODA ŚRODKA CIĘŻKOŚCI
  467. licznikValve += (R9Max[0][i]*R9Max[1][i]);
  468. mianownikValve += R9Max[1][i];
  469. metodaResult = (licznikValve/mianownikValve);
  470.  
  471. textArea.append("NEGATIVE: " + Double.toString(valve[1][i])
  472. + "\n" + "ZERO: " + Double.toString(valve[2][i])
  473. + "\n" + "POSITIVE: " + Double.toString(valve[3][i])
  474. + "\n" + "======================== \n");
  475. }
  476.  
  477. System.out.println("\nLicznik: "+ licznikValve);
  478. System.out.println("Mianownik: "+mianownikValve);
  479. System.out.println("Metoda środka ciężkości: "+metodaResult);
  480.  
  481. resArea.append("\nLicznik: "+ Double.toString(licznikValve));
  482. resArea.append("Mianownik: "+ Double.toString(mianownikValve));
  483. resArea.append("Metoda środka ciężkości: "+ Double.toString(metodaResult));
  484. result.setText(Double.toString(metodaResult));
  485.  
  486. //rośnięcie post mielone xD
  487. if(dlevelValue<10 && !inflowValue.equals("0")) {
  488. //poziom rośnie o 1
  489. if (dinflowValue < 0 && dlevelValue<=9) {
  490. dlevelValue = dlevelValue + 1;
  491. levelValue.setText(String.valueOf(dlevelValue));
  492. //poziom rośnie o 2
  493. }
  494. if (dinflowValue > 0 && dlevelValue <=8) {
  495. dlevelValue = dlevelValue + 2;
  496. levelValue.setText(String.valueOf(dlevelValue));
  497. }
  498. if (dlevelValue==10) {
  499. inflowValue.setText("0");
  500. }
  501. }
  502.  
  503. if(dlevelValue<=10 && Double.parseDouble(inflowValue.getText())==0)
  504. {
  505. if(slonce.getSelectedItem().equals("Jest"))
  506. {
  507. dlevelValue=dlevelValue-2;
  508. levelValue.setText(String.valueOf(dlevelValue));
  509. }
  510. else if(slonce.getSelectedItem().equals("Nie ma"))
  511. {
  512. dlevelValue=dlevelValue-1;
  513. levelValue.setText(String.valueOf(dlevelValue));
  514. }
  515. if (dlevelValue == -10 && Double.parseDouble(inflowValue.getText())==0)
  516. {
  517. rolex.stop();
  518. }
  519.  
  520. }
  521.  
  522. if (o == btn_calculate) {
  523.  
  524. String tekst = levelValue.getText();
  525. double liczba = Double.parseDouble(tekst);
  526.  
  527. //for(int i=0; i<=20; i++) {
  528. // if (valve[0][i] == liczba) {
  529. // int licznik = i;
  530. // textArea.setText("NEGATIVE: " + Double.toString(valve[1][licznik])
  531. // + "\n" + "ZERO: " + Double.toString(valve[2][licznik])
  532. // + "\n" + "POSITIVE: " + Double.toString(valve[3][licznik]));
  533. // }
  534. // }
  535. }
  536.  
  537.  
  538. }
  539. });
  540. rolex.start();
  541. }
  542.  
  543.  
  544. public FuzzyWater() {
  545.  
  546. //Term LEVEL
  547. createLevelTerm();
  548. createLevelChartPanel();
  549. createLevelDataset();
  550.  
  551. //Term RATE
  552. createRateTerm();
  553. createRateChartPanel();
  554. createRateDataset();
  555.  
  556. //Term VALVE
  557. createValveTerm();
  558. createValveChartPanel();
  559. createValveDataset();
  560.  
  561.  
  562. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  563. setSize(620, 470);
  564. setLocationRelativeTo(null);
  565.  
  566. JMenuBar menuBar = new JMenuBar();
  567. setJMenuBar(menuBar);
  568.  
  569. JMenu menuWykres = new JMenu("Wykres");
  570. JMenuItem itemLevel = new JMenuItem("Term \"Level\"");
  571. itemLevel.addActionListener(new ActionListener() {
  572. public void actionPerformed(ActionEvent arg0) {
  573. levelWindow.setVisible(true);
  574. }
  575. });
  576. JMenuItem itemRate = new JMenuItem("Term \"Rate\"");
  577. itemRate.addActionListener(new ActionListener() {
  578. public void actionPerformed(ActionEvent arg0) {
  579. rateWindow.setVisible(true);
  580. }
  581. });
  582. JMenuItem itemValve = new JMenuItem("Term \"Valve\"");
  583. itemValve.addActionListener(new ActionListener() {
  584. public void actionPerformed(ActionEvent arg0) {
  585. valveWindow.setVisible(true);
  586. }
  587. });
  588.  
  589. menuWykres.add(itemLevel);
  590. menuBar.add(menuWykres);
  591. menuWykres.add(itemRate);
  592. menuWykres.add(itemValve);
  593.  
  594. contentPane = new JPanel();
  595. contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  596. setContentPane(contentPane);
  597. contentPane.setLayout(null);
  598.  
  599. result = new JTextField();
  600. result.setBounds(262, 212, 151, 20);
  601. contentPane.add(result);
  602. result.setColumns(10);
  603.  
  604. TextArea resArea = new TextArea();
  605. resArea.setEditable(false);
  606. resArea.setBounds(394, 70, 161, 78);
  607. contentPane.add(resArea);
  608.  
  609. textArea = new TextArea();
  610. textArea.setEditable(false);
  611. textArea.setBounds(10, 238, 584, 160);
  612. contentPane.add(textArea);
  613.  
  614. slonce = new JComboBox(slonceList);
  615. slonce.setBounds(10,179,100,20);
  616. contentPane.add(slonce);
  617.  
  618. btn_calculate = new JButton("Oblicz");
  619. btn_calculate.setBounds(216, 178, 151, 23);
  620. contentPane.add(btn_calculate);
  621. btn_calculate.addActionListener(new ActionListener() {
  622.  
  623. @Override
  624. public void actionPerformed(ActionEvent e) {
  625. createRules();
  626. }
  627.  
  628. });
  629.  
  630. labelLevel = new JLabel("Stan zbiornika:");
  631. labelLevel.setBounds(10, 12, 87, 14);
  632. contentPane.add(labelLevel);
  633.  
  634. JLabel labelCiezkosc = new JLabel("Wynik środka ciężkości");
  635. labelCiezkosc.setBounds(94, 215, 151, 14);
  636. contentPane.add(labelCiezkosc);
  637.  
  638. JLabel labelRate = new JLabel("Przypływ wody:");
  639. labelRate.setBounds(394, 12, 109, 14);
  640. contentPane.add(labelRate);
  641.  
  642. levelValue = new JTextField();
  643. levelValue.setBounds(37, 37, 151, 20);
  644. contentPane.add(levelValue);
  645. levelValue.setColumns(10);
  646.  
  647. JLabel lblWartociOd = new JLabel("Wartości od -10 do 10");
  648. lblWartociOd.setBounds(37, 68, 130, 14);
  649. contentPane.add(lblWartociOd);
  650.  
  651. inflowValue = new JTextField();
  652. inflowValue.setColumns(10);
  653. inflowValue.setBounds(404, 38, 151, 20);
  654. contentPane.add(inflowValue);
  655.  
  656. JLabel lblSoce = new JLabel("Słońce:");
  657. lblSoce.setBounds(10, 164, 46, 14);
  658. contentPane.add(lblSoce);
  659.  
  660. JProgressBar progressBar = new JProgressBar();
  661. progressBar.setOrientation(SwingConstants.VERTICAL);
  662. progressBar.setBounds(10, 37, 17, 104);
  663. contentPane.add(progressBar);
  664.  
  665. levelWindow = new JFrame("Term LEVEL");
  666. levelWindow.setSize(600,500);
  667. levelWindow.setLocationRelativeTo(null);
  668. levelWindow.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  669.  
  670. JPanel chartLevelPanel = createLevelChartPanel();
  671. levelWindow.getContentPane().add(chartLevelPanel);
  672.  
  673. rateWindow = new JFrame("Term RATE");
  674. rateWindow.setSize(600,500);
  675. rateWindow.setLocationRelativeTo(null);
  676. rateWindow.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  677.  
  678. JPanel chartRatePanel = createRateChartPanel();
  679. rateWindow.getContentPane().add(chartRatePanel);
  680.  
  681. valveWindow = new JFrame("Term VALVE");
  682. valveWindow.setSize(600,500);
  683. valveWindow.setLocationRelativeTo(null);
  684. valveWindow.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  685.  
  686. JPanel chartValvePanel = createValveChartPanel();
  687. valveWindow.getContentPane().add(chartValvePanel);
  688.  
  689. }
  690.  
  691. private static boolean isDouble(String m) {
  692. try {
  693. Double.parseDouble(m);
  694. return true;
  695. }
  696. catch (NumberFormatException e) {
  697. return false;
  698. }
  699. }
  700.  
  701. public static void main(String[] args) {
  702. FuzzyWater frame = new FuzzyWater();
  703. frame.setVisible(true);
  704. }
  705. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement