Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 28.82 KB | None | 0 0
  1. import javax.swing.*;
  2. import javax.swing.border.LineBorder;
  3. import javax.swing.border.TitledBorder;
  4. import java.awt.*;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7. import java.awt.geom.Line2D;
  8. import java.awt.image.BufferedImage;
  9. import java.text.DecimalFormat;
  10. import java.util.LinkedList;
  11.  
  12. public class Wyswietlanie extends JPanel implements ActionListener
  13. {
  14.  
  15. static BufferedImage okno;
  16. JFrame f;
  17. LinkedList<JButton> listaButton = new LinkedList<JButton>();
  18. JPopupMenu popupMenu = new JPopupMenu("Title");
  19. PrzyciskMenu zmien_nazweMenuItem = new PrzyciskMenu("Zmień nazwę");
  20. PrzyciskMenu usun_MenuItem = new PrzyciskMenu("Usuń");
  21. Okno o;
  22.  
  23. //konstruktor
  24. public Wyswietlanie()
  25. {
  26. super();
  27. //Dynamiczne dopasowanie do ekranu dla 1 monitora
  28. /*Dimension Rozmiar = Toolkit.getDefaultToolkit().getScreenSize();
  29. int szerokosc = (int) Rozmiar.getWidth();
  30. int wysokosc = (int)Rozmiar.getHeight();
  31. double zajetosc = 0.85;//Ułamek dziesiętny zajętej Wysokości
  32.  
  33.  
  34. //Obliczenia celem optymalnego rozłożenia okna dla danych typów ekranów, tj. 4:3, 5:4, 16:10 oraz 16:9
  35. if(szerokosc/wysokosc==4/3){
  36.  
  37. szerokosc = (int) ((wysokosc*zajetosc)/3)*4;
  38. }
  39.  
  40. else if (szerokosc/wysokosc==5/4) {
  41. szerokosc = (int) ((wysokosc*zajetosc)/4)*5;
  42. }
  43. else if (szerokosc/wysokosc==16/10){
  44. szerokosc = (int) ((wysokosc*zajetosc)/10)*16;
  45. }
  46. else if (szerokosc/wysokosc==16/9){
  47. szerokosc = (int) ((wysokosc*zajetosc)/9)*16;
  48. }
  49. else {
  50. szerokosc = (int) (szerokosc*zajetosc);
  51. }
  52.  
  53. wysokosc = (int)(wysokosc*zajetosc);*/
  54.  
  55. //setLayout(new GridLayout(2,1));
  56. //ustawRozmiar(new Dimension(szerokosc,wysokosc));
  57. ustawRozmiar(new Dimension(1200,1200));
  58. ustawNasluchZdarzen();
  59. wyczysc();
  60. }
  61.  
  62. public void wyczysc()
  63. {
  64. this.removeAll();
  65.  
  66. listaButton = new LinkedList<JButton>();
  67. //wyrysowanie białego tła
  68. Graphics2D g = (Graphics2D) okno.getGraphics();
  69. g.setColor(Color.gray);
  70. g.fillRect(0, 0, okno.getWidth(), okno.getHeight());
  71. //ustalenie obramowania
  72. setBorder(BorderFactory.createLineBorder(Color.gray));
  73. repaint();
  74. }
  75.  
  76. private void ustawNasluchZdarzen()
  77. {
  78. zmien_nazweMenuItem.addActionListener(this);
  79. usun_MenuItem.addActionListener(this);
  80. }
  81.  
  82. @Override
  83. public void actionPerformed(ActionEvent e) {
  84. String label = e.getActionCommand();
  85. Object zrodlo = e.getSource();
  86. if (label == "Zmień nazwę") {
  87. PrzyciskMenu przyciskMenuu = (PrzyciskMenu)zrodlo;
  88. ElementDrzewa elementDrzewaa = przyciskMenuu.getElement();
  89. System.out.println("Test: "+elementDrzewaa);
  90. if(elementDrzewaa!=null) {
  91. String dialgOptionn = JOptionPane.showInputDialog(null, "Podaj nową nazwę: ");
  92. if (dialgOptionn != null) {
  93. System.out.println(dialgOptionn);
  94. ElementDrzewa[][] tmp = o.daneWejsciowe.get_klasyfikacja();
  95. if (tmp != null) {
  96. for(int i=0;i<tmp.length;i++){
  97. for(int j=0;j<tmp[i].length;j++){
  98. if (tmp[i][j].toString().equals(elementDrzewaa.toString())) {
  99. ElementDrzewa tmpp = tmp[i][j];
  100. tmpp.setNazwa(dialgOptionn);
  101. tmp[i][j] = tmpp;
  102. }
  103.  
  104. }
  105. }
  106. o.setDaneWejsciowe(new DaneWejsciowe(tmp));
  107. }
  108. o.actionPerformed(new ActionEvent(o.menu.wycz,ActionEvent.ACTION_PERFORMED,null));
  109. o.actionPerformed(new ActionEvent(o.menu.wyś,ActionEvent.ACTION_PERFORMED,null));
  110. o.actionPerformed(new ActionEvent(o.menu.skalowanie,ActionEvent.ACTION_PERFORMED,null));
  111. Tabela tabela = new Tabela(o.daneWejsciowe.get_klasyfikacja());
  112. JTable tabelaWyswietl = tabela.getTabela();
  113. tabelaWyswietl.setFillsViewportHeight(true);
  114. o.p2 = new JPanel();
  115. o.p2.add(new JScrollPane(tabelaWyswietl));
  116. o.p2.setBorder(new TitledBorder(
  117. new TitledBorder(
  118. LineBorder.createGrayLineBorder(),
  119. "Dane"),
  120. "",
  121. TitledBorder.RIGHT,
  122. TitledBorder.BOTTOM));
  123. o.p2.setMaximumSize(new Dimension(500, 500));
  124. o.p.add(o.p2, BorderLayout.EAST);
  125. o.dopasujSieDoZawartosci();
  126. o.f.setVisible(true);
  127. o.czyPrawyPanel = true;
  128. }
  129. }
  130.  
  131. }else if(label == "Usuń"){
  132. PrzyciskMenu przyciskMenu = (PrzyciskMenu)zrodlo;
  133. ElementDrzewa elementDrzewa = przyciskMenu.getElement();
  134. System.out.println("Test: "+elementDrzewa);
  135. if(elementDrzewa!=null){
  136. int dialogOption = JOptionPane.showConfirmDialog(null,"Czy na pewno chcesz usunąć element "+elementDrzewa+"?");
  137. if(dialogOption==JOptionPane.YES_OPTION){
  138. ElementDrzewa[][] tmp = o.daneWejsciowe.get_klasyfikacja();
  139. if(tmp!=null){
  140. if(elementDrzewa.getClass().getName().equals("Atrybut")){
  141. int kolumna = 0;
  142. for(int i=0;i<tmp[0].length;i++){
  143. if(tmp[0][i].toString().equals(elementDrzewa.toString())){
  144. kolumna = i;
  145. }
  146. }
  147. ElementDrzewa[][] nowyTmp = new ElementDrzewa[tmp.length][tmp[0].length-1];
  148. int k = 0;
  149. for(int i=0;i<tmp.length;i++){
  150. for(int j=0;j<tmp[i].length;j++){
  151. if(j!=kolumna){
  152. nowyTmp[i][k++] = tmp[i][j];
  153. }
  154. }
  155. k = 0;
  156. }
  157. o.setDaneWejsciowe(new DaneWejsciowe(nowyTmp));
  158. }else {
  159. int kolumna = 0;
  160. int liczWartosc = 0;
  161. for(int i=0;i<tmp.length;i++){
  162. for(int j=0;j<tmp[i].length;j++){
  163. if(elementDrzewa.toString().equals(tmp[i][j].toString())){
  164. kolumna = j;
  165. liczWartosc++;
  166. }
  167. }
  168. }
  169. ElementDrzewa[][] nowyTmp = new ElementDrzewa[tmp.length-liczWartosc][tmp[0].length];
  170. int k = 0;
  171. for(int i=0;i<tmp.length;i++){
  172. if(!tmp[i][kolumna].toString().equals(elementDrzewa.toString())) {
  173. for (int j = 0; j < tmp[i].length; j++) {
  174. nowyTmp[k][j] = tmp[i][j];
  175. }
  176. k++;
  177. }
  178. }
  179. o.setDaneWejsciowe(new DaneWejsciowe(nowyTmp));
  180. }
  181. o.actionPerformed(new ActionEvent(o.menu.wycz,ActionEvent.ACTION_PERFORMED,null));
  182. o.actionPerformed(new ActionEvent(o.menu.wyś,ActionEvent.ACTION_PERFORMED,null));
  183. o.actionPerformed(new ActionEvent(o.menu.skalowanie,ActionEvent.ACTION_PERFORMED,null));
  184. Tabela tabela = new Tabela(o.daneWejsciowe.get_klasyfikacja());
  185. JTable tabelaWyswietl = tabela.getTabela();
  186. tabelaWyswietl.setFillsViewportHeight(true);
  187. o.p2 = new JPanel();
  188. o.p2.add(new JScrollPane(tabelaWyswietl));
  189. o.p2.setBorder(new TitledBorder(
  190. new TitledBorder(
  191. LineBorder.createGrayLineBorder(),
  192. "Dane"),
  193. "",
  194. TitledBorder.RIGHT,
  195. TitledBorder.BOTTOM));
  196. o.p2.setMaximumSize(new Dimension(500, 500));
  197. o.p.add(o.p2, BorderLayout.EAST);
  198. o.dopasujSieDoZawartosci();
  199. o.f.setVisible(true);
  200. o.czyPrawyPanel = true;
  201. }
  202. }
  203. }
  204. }
  205. }
  206.  
  207. public void ustawRozmiar(Dimension r)
  208. {
  209. okno = new BufferedImage((int)r.getWidth(), (int)r.getHeight(), BufferedImage.TYPE_INT_RGB);
  210. setPreferredSize(r);
  211. setMaximumSize(r);
  212. }
  213.  
  214. public void obliczanieWspozednych(Wezel wezel,Wezel korzen){
  215. if(wezel.equals(korzen)) {
  216. wezel.setX((wezel.getKoniecDostepnegoMiejsca() - wezel.getPoczatekDostepnegoMiejsca()) / 2);
  217. }
  218. int liczbaDzieci = wezel.getLiczbaDzieci(); //liczba dzieci rodzica wpowadzanego do metody
  219. int dostepnaPrzestrzen = (wezel.getKoniecDostepnegoMiejsca() - wezel.getPoczatekDostepnegoMiejsca())/liczbaDzieci; //określenie ile przestrzeni(serokości) będą miały dzieci rodzica wprowadzonego do metody
  220. int koniecDostepnegoMiejsca = 0; //pomocnicza zmienna(nigdy nie zostanie użysta z wartością 0)
  221. for(int i=0; i<liczbaDzieci; i++){
  222. Wezel d = wezel.getDziecko(i); //zwrócenie pierwszego dziecka(dzieci liczone od 0)
  223. if(i==0) //dla piewszego dziecka zawsze dostępne miejsce będzie zaczynało się od współrzędnych początka dostępnego miejsca rodzca
  224. d.setPoczatekDostepnegoMiejsca(d.getRodzic().getPoczatekDostepnegoMiejsca()); //ustalenie początka dostępnego miejsca dla dziecka
  225. else
  226. d.setPoczatekDostepnegoMiejsca(koniecDostepnegoMiejsca); //dla dzieci innych niż na pozycji 0(pierwsze dziecko) początek dostępnego miejca będzie zaczynał się tam gdzie kończy się dostępne miejsce poprzedniego dziecka
  227. koniecDostepnegoMiejsca = d.getPoczatekDostepnegoMiejsca() + dostepnaPrzestrzen; //ustalenie końca dostępnego miejsca poprzez dodanie wyliczonej odległości do początku dostępnego miejsca
  228. d.setKoniecDostepnegoMiejsca(koniecDostepnegoMiejsca); //zapisanie końca dostępnego miejsca do węzła
  229. d.setX(((d.getKoniecDostepnegoMiejsca() - d.getPoczatekDostepnegoMiejsca())/2)+d.getPoczatekDostepnegoMiejsca()); //określenie współrzednej x
  230. }
  231. LinkedList<Wezel> lista = new LinkedList<Wezel>();
  232. for(int i=0; i<wezel.getDzieci().size(); i++){
  233. lista.add((Wezel) wezel.getDzieci().get(i));
  234. } //list przechowująca dzieci
  235. while (!lista.isEmpty()){
  236. Wezel p = lista.remove(0);
  237. if(!p.czyLisc()){
  238. obliczanieWspozednych(p,korzen); //wykonanie rekurencjsi
  239. }
  240. }
  241.  
  242.  
  243. }
  244.  
  245.  
  246.  
  247. public void obliczanieWspozednychY(Wezel wezel, int podzial,Drzewo drzewo,Wezel korzen){
  248. if(wezel.equals(korzen)) {
  249.  
  250. wezel.setY((drzewo.getLevel(wezel)+1)*podzial);
  251. }
  252. if(!wezel.czyLisc()){
  253. LinkedList<Wezel> lista = new LinkedList<Wezel>();
  254. for(int i=0; i<wezel.getDzieci().size(); i++){
  255. lista.add((Wezel) wezel.getDzieci().get(i));
  256. } //list przechowująca dzieci
  257. while (!lista.isEmpty()){
  258. Wezel w = lista.remove(0);
  259. w.setY((drzewo.getLevel(w)+1)*podzial);
  260. obliczanieWspozednychY(w,podzial,drzewo,korzen);
  261. }
  262. }
  263.  
  264.  
  265. }
  266.  
  267. public void rysujDrzewo(Wezel wezel,Wezel korzen) {
  268. DecimalFormat decimalFormat = new DecimalFormat("0.00000");
  269. Graphics2D g = (Graphics2D) okno.getGraphics();
  270. g.setStroke(new BasicStroke(2));
  271. g.setColor(Color.black);
  272. Graphics2D g3 = (Graphics2D) okno.getGraphics();
  273. g3.setStroke(new BasicStroke(2));
  274. g3.setColor(Color.white);
  275. JButton button;
  276. this.setLayout(null);
  277. //JTextField jtext;
  278. popupMenu = new JPopupMenu("Title");
  279. zmien_nazweMenuItem = new PrzyciskMenu("Zmień nazwę");
  280. zmien_nazweMenuItem.addActionListener(this);
  281. usun_MenuItem = new PrzyciskMenu("Usuń");
  282. usun_MenuItem.addActionListener(this);
  283.  
  284. usun_MenuItem.setForeground(Color.red);
  285. popupMenu.add(zmien_nazweMenuItem);
  286. popupMenu.addSeparator();
  287. popupMenu.add(usun_MenuItem);
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296. /* Line2D.Double line = new Line2D.Double(270, 50, 200, 150);
  297. Line2D.Double line2 = new Line2D.Double(270, 50, 270, 150);
  298. Line2D.Double line3 = new Line2D.Double(270, 50, 340, 150);
  299. Line2D.Double line4 = new Line2D.Double(200, 150, 150, 250);
  300. Line2D.Double line5 = new Line2D.Double(340, 150, 370, 250);
  301. Line2D.Double line6 = new Line2D.Double(270, 150, 270, 250);
  302. Line2D.Double line7 = new Line2D.Double (150, 250, 120, 350);
  303. Line2D.Double line8 = new Line2D.Double (150, 250, 190, 350);
  304.  
  305. Line2D.Double line9 = new Line2D.Double (190, 350, 200, 450);
  306. Line2D.Double line10 = new Line2D.Double (120, 350, 130, 450);
  307.  
  308.  
  309. Line2D.Double line11 = new Line2D.Double (370, 250, 340, 350);
  310. Line2D.Double line12 = new Line2D.Double (370, 250, 420, 350);
  311.  
  312. Line2D.Double line13 = new Line2D.Double (340, 350, 350, 450);
  313. Line2D.Double line14 = new Line2D.Double (420, 350, 430, 450);
  314.  
  315.  
  316.  
  317. g.draw(line);
  318. g.draw(line2);
  319. g.draw(line3);
  320. g.draw(line4);
  321. g.draw(line5);
  322. g.draw(line6);
  323. g.draw(line7);
  324. g.draw(line8);
  325. g.draw(line9);
  326. g.draw(line10);
  327. g.draw(line11);
  328. g.draw(line12);
  329. g.draw(line13);
  330. g.draw(line14);
  331. g3.drawString("Outlook", 270, 50);
  332. g3.drawString("Sunny", 180, 150);
  333. g3.drawString("Cloudy", 270, 150);
  334. g3.drawString("Rain", 340, 150);
  335. g3.drawString("Humidity", 150, 250);
  336. g3.drawString("Windy", 370, 250);
  337. g3.drawString("Yes", 270, 250);
  338. g3.drawString("High", 120, 350);
  339. g3.drawString("Normal", 190, 350);
  340. g3.drawString("False", 340, 350);
  341. g3.drawString("True", 420, 350);
  342. g3.drawString("Yes", 200, 450);
  343. g3.drawString("No", 130, 450);
  344. g3.drawString("Yes", 350, 450);
  345. g3.drawString("No", 430, 450);
  346. int odleglosc = 0;
  347. int liczba = 0;
  348. int poziom = drzewo.getLevel(wezel);
  349. if(wezel.equals(korzen))
  350. g3.drawString(wezel.toString(), 270, 50);
  351. else
  352. g3.drawString(wezel.toString(), szerokosc, wysokosc);
  353. LinkedList<Wezel> lista = wezel.getDzieci();
  354. while(!lista.isEmpty()) {
  355. int podzial = lista.size()+1;
  356. Wezel w = lista.remove(0);
  357. if(w.czyLisc()) {
  358. System.out.println(w.toString());
  359. g3.drawString(w.toString(), szerokosc, wysokosc + 100);
  360. }
  361.  
  362. else {
  363. if(liczba == 0) {
  364. szerokosc = (szerokosc+70) / podzial;
  365. odleglosc = szerokosc;
  366. liczba ++;
  367. }
  368.  
  369. wysokosc = (poziom +2)*75;
  370. System.out.println(szerokosc+" "+wysokosc);
  371.  
  372. rysujDrzewo(w, szerokosc, wysokosc,korzen);
  373. szerokosc = szerokosc + odleglosc;
  374. }
  375.  
  376.  
  377. }
  378. repaint();*/
  379. if(wezel.equals(korzen)) {
  380. g3.drawString(wezel.toString(), (wezel.getX()-(3*wezel.toString().length())), wezel.getY());
  381.  
  382. button = new JButton("<html>"+wezel.toString()+"<br> E = "+decimalFormat.format(((Atrybut) wezel.getDane()).getEntropia())+"</html>");
  383. popupMenu = new JPopupMenu("Title");
  384. usun_MenuItem.setElement((ElementDrzewa) wezel.getDane());
  385. zmien_nazweMenuItem.setElement((ElementDrzewa) wezel.getDane());
  386. popupMenu.add(zmien_nazweMenuItem);
  387. popupMenu.addSeparator();
  388. popupMenu.add(usun_MenuItem);
  389. button.setHorizontalAlignment(SwingConstants.CENTER);
  390. button.setForeground(Color.white);
  391. button.setBackground(Color.blue);
  392. button.setBounds((wezel.getX() - decimalFormat.format((Double) ((Atrybut) wezel.getDane()).getEntropia()).length() * 6), wezel.getY() - 20, decimalFormat.format((Double) ((Atrybut) wezel.getDane()).getEntropia()).length() * 13, 40);
  393. button.setMargin(new Insets(0,0,0,0));
  394. button.setVisible(true);
  395. button.setComponentPopupMenu(popupMenu);
  396.  
  397. //this.add(button1);
  398. listaButton.add(button);
  399.  
  400. }
  401. if(!wezel.czyLisc()){
  402. LinkedList<Wezel> lista = new LinkedList<Wezel>();
  403. for(int i=0; i<wezel.getDzieci().size(); i++){
  404. lista.add((Wezel) wezel.getDzieci().get(i));
  405. } //list przechowująca dzieci
  406. while (!lista.isEmpty()){
  407. Wezel w = lista.remove(0);
  408. g3.drawString(w.toString(), (w.getX()-(3*w.toString().length())), w.getY());
  409. button = new JButton(w.toString());
  410. if(w.getDane().getClass().getName()=="Atrybut"){
  411. button = new JButton("<html>"+w.toString()+"<br>E = "+decimalFormat.format(((Atrybut)w.getDane()).getEntropia())+"</html>");
  412. popupMenu = new JPopupMenu("Title");
  413. usun_MenuItem.setElement((ElementDrzewa) w.getDane());
  414. zmien_nazweMenuItem.setElement((ElementDrzewa) w.getDane());
  415. popupMenu.add(zmien_nazweMenuItem);
  416. popupMenu.addSeparator();
  417. popupMenu.add(usun_MenuItem);
  418. button.setComponentPopupMenu(popupMenu);
  419. button.setBackground(Color.blue);
  420. }else if(w.getDane().getClass().getName()=="WartoscAtrybutu"){
  421. popupMenu = new JPopupMenu("Title");
  422. usun_MenuItem.setElement((ElementDrzewa) w.getDane());
  423. zmien_nazweMenuItem.setElement((ElementDrzewa) w.getDane());
  424. popupMenu.add(zmien_nazweMenuItem);
  425. popupMenu.addSeparator();
  426. popupMenu.add(usun_MenuItem);
  427. button.setComponentPopupMenu(popupMenu);
  428. button.setBackground(Color.green);
  429. }else{
  430. button.setBackground(Color.cyan);
  431. }
  432. button.setForeground(Color.white);
  433. button.setBounds((w.getX()-w.toString().length()*6), w.getY()-20,w.toString().length()*13,30);
  434. if(w.getDane().getClass().getName()=="Atrybut"){
  435. button.setBounds((w.getX() - decimalFormat.format((Double) ((Atrybut) w.getDane()).getEntropia()).length() * 6), w.getY() - 20, decimalFormat.format((Double) ((Atrybut) w.getDane()).getEntropia()).length() * 13, 40);
  436. }
  437. button.setMargin(new Insets(0,0,0,0));
  438. button.setVisible(true);
  439. //button.setComponentPopupMenu(popupMenu);
  440. //this.add(button);
  441. listaButton.add(button);
  442. Line2D.Double line = new Line2D.Double (w.getX(), w.getY()-20, w.getRodzic().getX(), w.getRodzic().getY()+10);
  443. g.draw(line);
  444. rysujDrzewo(w,korzen);
  445. }
  446. }
  447.  
  448. repaint();
  449.  
  450. }
  451.  
  452. public void rysujPrzyciski(LinkedList lista) {
  453. int i= 0;
  454. while (i<lista.size()){
  455. JButton b = listaButton.get(i);
  456. i++;
  457. this.add(b);
  458.  
  459. }
  460. repaint();
  461. }
  462.  
  463.  
  464.  
  465. public void credits(){
  466.  
  467. JOptionPane.showMessageDialog(null,"Program napisany w ramach Projektu Zespołowego \n" +
  468. "Wersja : 0.2 Buffalo \n" +
  469. "Autorzy : \n" +
  470. "Główni programiści : \n" +
  471. "Dominik Woźniak \n" +
  472. "Adler Mateusz \n" +
  473. "Testerzy : \n" +
  474. "Jakub Gabryś \n" +
  475. "Marcin Majzner \n" +
  476. "Programista Pomocniczy \n" +
  477. "Damian Staśkiewicz \n" +
  478. "Projektant interfejsu : \n" +
  479. "Adam Witasiak \n" +
  480. "2019, PWSZ KALISZ ",
  481. "O Programie",JOptionPane.INFORMATION_MESSAGE);
  482. //wyczysc();
  483. // Graphics2D g2 = (Graphics2D) okno.getGraphics();
  484. //g2.setStroke(new BasicStroke(2));
  485.  
  486. // g2.setColor(Color.red);
  487.  
  488. // g2.drawString("Program napisany w ramach Projektu Zespołowego",10, 10);
  489. /* g2.drawString("Wersja : Wczesna (2-gi Sprint) ",10, 20);
  490. g2.drawString("Autorzy : ",10, 30);
  491. g2.drawString("Główni programiści : ",10, 40);
  492. g2.drawString("Dominik Woźniak ",20, 50);
  493. g2.drawString("Adler Mateusz",20, 60);
  494. g2.drawString("Testerzy : ",10, 70);
  495. g2.drawString("Jakub Gabryś ",20, 80);
  496. g2.drawString("Marcin Majzner ",20, 90);
  497. g2.drawString("Programista Pomocniczy : ",10, 100);
  498. g2.drawString("Damian Staśkiewicz ",20, 110);
  499. g2.drawString("Projektant interfejsu : ",10, 120);
  500. g2.drawString("Adam Witasiak ",20, 130);
  501. g2.drawString("2019, PWSZ KALISZ, ",20, 140);
  502.  
  503. repaint();
  504. */
  505. }
  506.  
  507. public void show_klasyfikacja(DaneWejsciowe klasyfikacja){
  508. String klasyfikacja_txt=klasyfikacja.print_string_format();
  509.  
  510. JOptionPane.showMessageDialog(null, klasyfikacja_txt,"Klasyfikacja",JOptionPane.INFORMATION_MESSAGE);
  511.  
  512. }
  513.  
  514. //przesłonięta metoda paintComponent z klasy JPanel do rysowania
  515. @Override
  516. public void paintComponent(Graphics g) {
  517. super.paintComponent(g);
  518. Graphics2D g2d = (Graphics2D) g;
  519. //wyrysowanie naszego płótna na panelu
  520. g2d.drawImage(okno, 0, 0, this);
  521.  
  522. }
  523.  
  524. public void setOkno(Okno o){
  525. this.o = o;
  526. }
  527.  
  528. public void rysujSkalowanie(Wezel wezel,Wezel korzen) {
  529. DecimalFormat decimalFormat = new DecimalFormat("0.00000");
  530. Graphics2D g = (Graphics2D) okno.getGraphics();
  531. g.setStroke(new BasicStroke(2));
  532. g.setColor(Color.black);
  533. Graphics2D g3 = (Graphics2D) okno.getGraphics();
  534. g3.setStroke(new BasicStroke(2));
  535. g3.setColor(Color.white);
  536. JButton button;
  537. this.setLayout(null);
  538. //JTextField jtext;
  539. popupMenu = new JPopupMenu("Title");
  540. zmien_nazweMenuItem = new PrzyciskMenu("Zmień nazwę");
  541. zmien_nazweMenuItem.addActionListener(this);
  542. usun_MenuItem = new PrzyciskMenu("Usuń");
  543. usun_MenuItem.addActionListener(this);
  544.  
  545. usun_MenuItem.setForeground(Color.red);
  546. popupMenu.add(zmien_nazweMenuItem);
  547. popupMenu.addSeparator();
  548. popupMenu.add(usun_MenuItem);
  549.  
  550.  
  551. if(wezel.equals(korzen)) {
  552. g3.drawString(wezel.toString(), (wezel.getX()-(3*wezel.toString().length())), wezel.getY());
  553.  
  554. button = new JButton("<html>"+wezel.toString()+"<br> E = "+decimalFormat.format(((Atrybut) wezel.getDane()).getEntropia())+"</html>");
  555. popupMenu = new JPopupMenu("Title");
  556. usun_MenuItem.setElement((ElementDrzewa) wezel.getDane());
  557. zmien_nazweMenuItem.setElement((ElementDrzewa) wezel.getDane());
  558. popupMenu.add(zmien_nazweMenuItem);
  559. popupMenu.addSeparator();
  560. popupMenu.add(usun_MenuItem);
  561. button.setHorizontalAlignment(SwingConstants.CENTER);
  562. button.setForeground(Color.white);
  563. button.setBackground(Color.blue);
  564. //wezel.getDane()).getEntropia()).length() * 6 -- w prawo lub lewo
  565. //wezel.getY() - 20 -- w dol i w góre
  566. //decimalFormat.format((Double) ((Atrybut) wezel.getDane()).getEntropia()).length() * 13 -- długość
  567. // wezel.getDane()).getEntropia()).length() * 40 -- wysokosc
  568. button.setBounds((wezel.getX()/2 - decimalFormat.format((Double) ((Atrybut) wezel.getDane()).getEntropia()).length() * 6/2), (wezel.getY() - 20)/2, decimalFormat.format((Double) ((Atrybut) wezel.getDane()).getEntropia()).length() * 13/2, 40/2);
  569. button.setMargin(new Insets(0,0,0,0));
  570. button.setVisible(true);
  571. button.setComponentPopupMenu(popupMenu);
  572.  
  573. //this.add(button1);
  574. listaButton.add(button);
  575.  
  576. }
  577. if(!wezel.czyLisc()){
  578. LinkedList<Wezel> lista = new LinkedList<Wezel>();
  579. for(int i=0; i<wezel.getDzieci().size(); i++){
  580. lista.add((Wezel) wezel.getDzieci().get(i));
  581. } //list przechowująca dzieci
  582. while (!lista.isEmpty()){
  583. Wezel w = lista.remove(0);
  584. //g3.drawString(w.toString(), (w.getX()-(3*w.toString().length())), w.getY()); --
  585. g3.drawString(w.toString(), (w.getX()-(3*w.toString().length())), w.getY());
  586. button = new JButton(w.toString());
  587. if(w.getDane().getClass().getName()=="Atrybut"){
  588. button = new JButton("<html>"+w.toString()+"<br>E = "+decimalFormat.format(((Atrybut)w.getDane()).getEntropia())+"</html>");
  589. popupMenu = new JPopupMenu("Title");
  590. usun_MenuItem.setElement((ElementDrzewa) w.getDane());
  591. zmien_nazweMenuItem.setElement((ElementDrzewa) w.getDane());
  592. popupMenu.add(zmien_nazweMenuItem);
  593. popupMenu.addSeparator();
  594. popupMenu.add(usun_MenuItem);
  595. button.setComponentPopupMenu(popupMenu);
  596. button.setBackground(Color.blue);
  597. }else if(w.getDane().getClass().getName()=="WartoscAtrybutu"){
  598. popupMenu = new JPopupMenu("Title");
  599. usun_MenuItem.setElement((ElementDrzewa) w.getDane());
  600. zmien_nazweMenuItem.setElement((ElementDrzewa) w.getDane());
  601. popupMenu.add(zmien_nazweMenuItem);
  602. popupMenu.addSeparator();
  603. popupMenu.add(usun_MenuItem);
  604. button.setComponentPopupMenu(popupMenu);
  605. button.setBackground(Color.green);
  606. }else{
  607. button.setBackground(Color.cyan);
  608. }
  609. button.setForeground(Color.white);
  610. //wezel.getDane()).getEntropia()).length() * 6 -- w prawo lub lewo
  611. //wezel.getY() - 20 -- w dol i w góre
  612. //decimalFormat.format((Double) ((Atrybut) wezel.getDane()).getEntropia()).length() * 13 -- długość
  613. // wezel.getDane()).getEntropia()).length() * 40 -- wysokosc
  614. button.setBounds(((w.getX()-w.toString().length()*6)/2), (w.getY()-20)/2,(w.toString().length()*13)/2,30/2);
  615. if(w.getDane().getClass().getName()=="Atrybut"){
  616. button.setBounds((w.getX() - decimalFormat.format((Double) ((Atrybut) w.getDane()).getEntropia()).length() * 6), w.getY() - 20, decimalFormat.format((Double) ((Atrybut) w.getDane()).getEntropia()).length() * 13, 40);
  617. // ta wyzej linia nic nie robi?
  618. }
  619. button.setMargin(new Insets(0,0,0,0));
  620. button.setVisible(true);
  621. //button.setComponentPopupMenu(popupMenu);
  622. //this.add(button);
  623. listaButton.add(button);
  624. //Line2D.Double line = new Line2D.Double (w.getX(), w.getY()-120, w.getRodzic().getX(), w.getRodzic().getY()+10); -- długość lini , kierunek
  625. Line2D.Double line = new Line2D.Double (w.getX()/2, (w.getY()-20)/2, w.getRodzic().getX()/2, (w.getRodzic().getY()+10)/2);
  626. g.draw(line);
  627. rysujDrzewo(w,korzen);
  628. }
  629. }
  630.  
  631. repaint();
  632.  
  633. }
  634. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement