Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.17 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 JProgressBar 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.  
  476. resArea_1.append("-----------\n");
  477. resArea_1.append("NEGATIVE: " + Double.toString(valve[1][i])
  478. + "\n" + "ZERO: " + Double.toString(valve[2][i])
  479. + "\n" + "POSITIVE: " + Double.toString(valve[3][i]) + "\n"
  480. );
  481. }
  482.  
  483. System.out.println("\nLicznik: "+ licznikValve);
  484. System.out.println("Mianownik: "+mianownikValve);
  485. System.out.println("Metoda środka ciężkości: "+metodaResult);
  486.  
  487. textArea.append("-----------\n");
  488. textArea.append("Licznik: " + Double.toString(licznikValve) + "\nMianownik: " + Double.toString(mianownikValve) + "\n");
  489. result.setText(Double.toString(metodaResult));
  490.  
  491. Integer pbValue = dlevelValue.intValue();
  492. System.out.println(pbValue);
  493. progressBar.setValue(pbValue);
  494.  
  495. if(dlevelValue<10 && !inflowValue.equals("0")) {
  496. //poziom rośnie o 1
  497. if (dinflowValue < 0 && dlevelValue<=9) {
  498. dlevelValue = dlevelValue + 1;
  499. levelValue.setText(String.valueOf(dlevelValue));
  500. //poziom rośnie o 2
  501. }
  502. if (dinflowValue > 0 && dlevelValue <=8) {
  503. dlevelValue = dlevelValue + 2;
  504. levelValue.setText(String.valueOf(dlevelValue));
  505. }
  506. if (dlevelValue==10) {
  507. inflowValue.setText("0");
  508. }
  509. }
  510.  
  511. if(dlevelValue<=10 && Double.parseDouble(inflowValue.getText())==0)
  512. {
  513. if(slonce.getSelectedItem().equals("Jest"))
  514. {
  515. dlevelValue=dlevelValue-2;
  516. levelValue.setText(String.valueOf(dlevelValue));
  517. }
  518. else if(slonce.getSelectedItem().equals("Nie ma"))
  519. {
  520. dlevelValue=dlevelValue-1;
  521. levelValue.setText(String.valueOf(dlevelValue));
  522. }
  523. if (dlevelValue == -10 && Double.parseDouble(inflowValue.getText())==0)
  524. {
  525. rolex.stop();
  526. }
  527. }
  528. }
  529. });
  530. rolex.start();
  531. }
  532.  
  533.  
  534. public FuzzyWater() {
  535.  
  536. //Term LEVEL
  537. createLevelTerm();
  538. createLevelChartPanel();
  539. createLevelDataset();
  540.  
  541. //Term RATE
  542. createRateTerm();
  543. createRateChartPanel();
  544. createRateDataset();
  545.  
  546. //Term VALVE
  547. createValveTerm();
  548. createValveChartPanel();
  549. createValveDataset();
  550.  
  551.  
  552. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  553. setSize(620, 470);
  554. setLocationRelativeTo(null);
  555.  
  556. JMenuBar menuBar = new JMenuBar();
  557. setJMenuBar(menuBar);
  558.  
  559. JMenu menuWykres = new JMenu("Wykres");
  560. JMenuItem itemLevel = new JMenuItem("Term \"Level\"");
  561. itemLevel.addActionListener(new ActionListener() {
  562. public void actionPerformed(ActionEvent arg0) {
  563. levelWindow.setVisible(true);
  564. }
  565. });
  566. JMenuItem itemRate = new JMenuItem("Term \"Rate\"");
  567. itemRate.addActionListener(new ActionListener() {
  568. public void actionPerformed(ActionEvent arg0) {
  569. rateWindow.setVisible(true);
  570. }
  571. });
  572. JMenuItem itemValve = new JMenuItem("Term \"Valve\"");
  573. itemValve.addActionListener(new ActionListener() {
  574. public void actionPerformed(ActionEvent arg0) {
  575. valveWindow.setVisible(true);
  576. }
  577. });
  578.  
  579. menuWykres.add(itemLevel);
  580. menuBar.add(menuWykres);
  581. menuWykres.add(itemRate);
  582. menuWykres.add(itemValve);
  583.  
  584. contentPane = new JPanel();
  585. contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  586. setContentPane(contentPane);
  587. contentPane.setLayout(null);
  588.  
  589. result = new JTextField();
  590. result.setBounds(262, 212, 151, 20);
  591. contentPane.add(result);
  592. result.setColumns(10);
  593.  
  594. resArea_1 = new TextArea();
  595. resArea_1.setEditable(false);
  596. resArea_1.setBounds(309, 238, 285, 160);
  597. contentPane.add(resArea_1);
  598.  
  599. textArea = new TextArea();
  600. textArea.setColumns(1);
  601. textArea.setEditable(false);
  602. textArea.setBounds(10, 238, 293, 160);
  603. contentPane.add(textArea);
  604.  
  605. slonce = new JComboBox(slonceList);
  606. slonce.setBounds(10,179,100,20);
  607. contentPane.add(slonce);
  608.  
  609. btn_calculate = new JButton("Oblicz");
  610. btn_calculate.setBounds(216, 178, 151, 23);
  611. contentPane.add(btn_calculate);
  612. btn_calculate.addActionListener(new ActionListener() {
  613.  
  614. @Override
  615. public void actionPerformed(ActionEvent e) {
  616. createRules();
  617. }
  618.  
  619. });
  620.  
  621. labelLevel = new JLabel("Stan zbiornika:");
  622. labelLevel.setBounds(10, 12, 87, 14);
  623. contentPane.add(labelLevel);
  624.  
  625. JLabel labelCiezkosc = new JLabel("Wynik środka ciężkości");
  626. labelCiezkosc.setBounds(94, 215, 151, 14);
  627. contentPane.add(labelCiezkosc);
  628.  
  629. JLabel labelRate = new JLabel("Przypływ wody:");
  630. labelRate.setBounds(394, 12, 109, 14);
  631. contentPane.add(labelRate);
  632.  
  633. levelValue = new JTextField();
  634. levelValue.setBounds(37, 37, 151, 20);
  635. contentPane.add(levelValue);
  636. levelValue.setColumns(10);
  637.  
  638. JLabel lblWartociOd = new JLabel("Wartości od -10 do 10");
  639. lblWartociOd.setBounds(37, 68, 130, 14);
  640. contentPane.add(lblWartociOd);
  641.  
  642. inflowValue = new JTextField();
  643. inflowValue.setColumns(10);
  644. inflowValue.setBounds(404, 38, 151, 20);
  645. contentPane.add(inflowValue);
  646.  
  647. JLabel lblSoce = new JLabel("Słońce:");
  648. lblSoce.setBounds(10, 164, 46, 14);
  649. contentPane.add(lblSoce);
  650.  
  651. progressBar = new JProgressBar();
  652. progressBar.setMaximum(10);
  653. progressBar.setOrientation(SwingConstants.VERTICAL);
  654. progressBar.setBounds(10, 37, 17, 104);
  655. contentPane.add(progressBar);
  656.  
  657. JLabel lblWartociOd_1 = new JLabel("Wartości od -0.5 do 0.5");
  658. lblWartociOd_1.setBounds(425, 68, 130, 14);
  659. contentPane.add(lblWartociOd_1);
  660.  
  661. levelWindow = new JFrame("Term LEVEL");
  662. levelWindow.setSize(600,500);
  663. levelWindow.setLocationRelativeTo(null);
  664. levelWindow.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  665.  
  666. JPanel chartLevelPanel = createLevelChartPanel();
  667. levelWindow.getContentPane().add(chartLevelPanel);
  668.  
  669. rateWindow = new JFrame("Term RATE");
  670. rateWindow.setSize(600,500);
  671. rateWindow.setLocationRelativeTo(null);
  672. rateWindow.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  673.  
  674. JPanel chartRatePanel = createRateChartPanel();
  675. rateWindow.getContentPane().add(chartRatePanel);
  676.  
  677. valveWindow = new JFrame("Term VALVE");
  678. valveWindow.setSize(600,500);
  679. valveWindow.setLocationRelativeTo(null);
  680. valveWindow.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  681.  
  682. JPanel chartValvePanel = createValveChartPanel();
  683. valveWindow.getContentPane().add(chartValvePanel);
  684.  
  685. }
  686.  
  687. private static boolean isDouble(String m) {
  688. try {
  689. Double.parseDouble(m);
  690. return true;
  691. }
  692. catch (NumberFormatException e) {
  693. return false;
  694. }
  695. }
  696.  
  697. public static void main(String[] args) {
  698. FuzzyWater frame = new FuzzyWater();
  699. frame.setVisible(true);
  700. }
  701. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement