Advertisement
Guest User

Untitled

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