Advertisement
blackpab

PO - l3 - GUI

Oct 24th, 2017
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.98 KB | None | 0 0
  1. package guiclass;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Container;
  5. import java.awt.FlowLayout;
  6. import java.awt.GraphicsConfiguration;
  7. import java.awt.GridLayout;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10. import java.util.ArrayList;
  11. import javax.swing.JButton;
  12. import javax.swing.JFrame;
  13. import javax.swing.JLabel;
  14. import javax.swing.JMenu;
  15. import javax.swing.JMenuBar;
  16. import javax.swing.JMenuItem;
  17. import javax.swing.JPanel;
  18. import javax.swing.JScrollPane;
  19. import javax.swing.JTable;
  20. import javax.swing.JTextField;
  21. import javax.swing.table.DefaultTableModel;
  22. import javax.xml.parsers.DocumentBuilder;
  23. import javax.xml.parsers.DocumentBuilderFactory;
  24. import javax.xml.transform.Result;
  25. import javax.xml.transform.Source;
  26. import javax.xml.transform.Transformer;
  27. import javax.xml.transform.TransformerFactory;
  28. import javax.xml.transform.dom.DOMSource;
  29. import javax.xml.transform.stream.StreamResult;
  30. import org.w3c.dom.*;
  31. import java.sql.Connection;
  32. import java.sql.DriverManager;
  33. import java.sql.ResultSet;
  34. import java.sql.SQLException;
  35. import java.sql.Statement;
  36.  
  37. public class GuiClass extends JFrame implements ActionListener {
  38.  
  39.     /* +++      DEKLARACJA ELEMENTOW      +++ */
  40.     JPanel panelGlowny, panelDanych, panelTabeli, panelPrzyciskow;
  41.     JLabel etykietaNazwa, etykietaX, etykietaY;
  42.     JTextField pTekstoweNazwa, pTekstoweX, pTekstoweY;
  43.     JMenuBar pasek;
  44.     JMenu menu1;
  45.     JMenuItem opcja1, opcja2;
  46.     JTable tabela;
  47.     DefaultTableModel modelTabeli;
  48.     JButton przyciskDodaj;
  49.     JButton przyciskWczytajXML;
  50.     JButton przyciskZapiszXML;
  51.     Container zawartosc;
  52.     ArrayList<Wektory> kolekcja;
  53.  
  54.     public GuiClass(GraphicsConfiguration gc) {
  55.         super(gc);
  56.     }
  57.  
  58.     public GuiClass() {
  59.         //Ustawienia okna
  60.         super("Wektory");
  61.         this.setSize(800, 600);
  62.         this.zawartosc = this.getContentPane(); //pobiera zawartosc ramki
  63.  
  64.         kolekcja = new ArrayList<Wektory>();
  65.  
  66.         /* +++      TWORZENIE ELEMENTOW      +++ */
  67.         //tworzenie panelow
  68.         this.panelGlowny = new JPanel(new BorderLayout()); //stworzenie Panelu gl
  69.         this.panelDanych = new JPanel(new GridLayout(3, 2)); //stworzenie Panelu danych
  70.         this.panelPrzyciskow = new JPanel(new FlowLayout());
  71.         this.panelTabeli = new JPanel(new BorderLayout()); //stworzenie Panelu Tabeli
  72.         this.modelTabeli = new DefaultTableModel(); //stworzenie Stylu tabeli
  73.  
  74.         //tworzenie etykiet
  75.         this.etykietaNazwa = new JLabel("Nazwa Wektora: ");
  76.         this.etykietaX = new JLabel("Wsp. X: ");
  77.         this.etykietaY = new JLabel("Wsp Y: ");
  78.  
  79.         //tworzenie pol tekstowych
  80.         this.pTekstoweNazwa = new JTextField();
  81.         this.pTekstoweX = new JTextField();
  82.         this.pTekstoweY = new JTextField();
  83.  
  84.         //Tworzenie przycisku
  85.         this.przyciskDodaj = new JButton("Dodaj");
  86.         this.przyciskDodaj.addActionListener(this);
  87.  
  88.         this.przyciskWczytajXML = new JButton("Wczytaj XML");
  89.         this.przyciskWczytajXML.addActionListener(this);
  90.  
  91.         this.przyciskZapiszXML = new JButton("Zapisz XML");
  92.         this.przyciskZapiszXML.addActionListener(this);
  93.  
  94.         //Tworzenie menubar
  95.         this.pasek = new JMenuBar();
  96.         menu1 = new JMenu("Baza");
  97.         opcja1 = new JMenuItem("Odczytaj Baze");
  98.         this.opcja1.addActionListener(this);
  99.         opcja2 = new JMenuItem("Zapisz Baze");
  100.         this.opcja2.addActionListener(this);
  101.  
  102.         /* +++      DODAWANIE ELEMENTOW      +++ */
  103.         //Dodawanie elementow do tabeli        
  104.         this.modelTabeli.addColumn("Nazwa Wektora");
  105.         this.modelTabeli.addColumn("Wsp. X");
  106.         this.modelTabeli.addColumn("Wsp. Y");
  107.         this.tabela = new JTable(this.modelTabeli);
  108.  
  109.         //Dodanie Panelow
  110.         this.zawartosc.add(this.panelGlowny);
  111.         this.panelGlowny.add(this.panelDanych, BorderLayout.WEST);
  112.         this.panelGlowny.add(this.panelPrzyciskow, BorderLayout.SOUTH);
  113.         this.panelGlowny.add(this.panelTabeli, BorderLayout.CENTER);
  114.         this.panelTabeli.add(new JScrollPane(this.tabela), BorderLayout.CENTER);
  115.  
  116.         //Dodanie pol etykiet i pol tekstowych
  117.         this.panelDanych.add(this.etykietaNazwa);
  118.         this.panelDanych.add(this.pTekstoweNazwa);
  119.  
  120.         this.panelDanych.add(this.etykietaX);
  121.         this.panelDanych.add(this.pTekstoweX);
  122.  
  123.         this.panelDanych.add(this.etykietaY);
  124.         this.panelDanych.add(this.pTekstoweY);
  125.  
  126.         //Dodawanie przycisku
  127.         this.panelPrzyciskow.add(this.przyciskDodaj);
  128.         this.panelPrzyciskow.add(this.przyciskWczytajXML);
  129.         this.panelPrzyciskow.add(this.przyciskZapiszXML);
  130.  
  131.         //Dodawanie elementow do menu
  132.         menu1.add(opcja1);
  133.         menu1.add(opcja2);
  134.         pasek.add(menu1);
  135.         this.setJMenuBar(pasek); //widocznosc paska
  136.  
  137.         this.setDefaultCloseOperation(EXIT_ON_CLOSE);
  138.         this.setVisible(true);
  139.     }
  140.  
  141.     public static void main(String[] args) {
  142.         GuiClass obiekt = new GuiClass();
  143.  
  144.     }
  145.  
  146.     public void wczytajBaze() {
  147.         Connection polaczenie;
  148.         try {
  149.             Class.forName("com.mysql.jdbc.Driver").newInstance();
  150.             polaczenie = DriverManager.getConnection("jdbc:mysql://localhost/wektorybaza",
  151.                     "root", "");
  152.             System.out.println(polaczenie);
  153.             Statement instrukcja = polaczenie.createStatement();
  154.             ResultSet wynik = instrukcja.executeQuery("SELECT * FROM tabelawektorow");
  155.             while (wynik.next()) {
  156.                 Object[] dane = new Object[5];
  157.  
  158.                 dane[0] = wynik.getObject("Nazwa");
  159.                 dane[1] = wynik.getObject("WspX");
  160.                 dane[2] = wynik.getObject("WspY");
  161.                
  162.                 this.modelTabeli.addRow(dane);
  163.             }
  164.             polaczenie.close();
  165.         } catch (InstantiationException e) {
  166.             e.printStackTrace();
  167.         } catch (IllegalAccessException e) {
  168.             e.printStackTrace();
  169.         } catch (ClassNotFoundException e) {
  170.             e.printStackTrace();
  171.         } catch (SQLException e) {
  172.             e.printStackTrace();
  173.         }
  174.     }
  175.  
  176.     public void zapiszBaze() {
  177.         Connection polaczenie;
  178.         try {
  179.             Class.forName("com.mysql.jdbc.Driver").newInstance();
  180.             polaczenie = DriverManager.getConnection("jdbc:mysql://localhost/wektorybaza",
  181.                     "root", "");
  182.             Statement instrukcja = polaczenie.createStatement();
  183.             instrukcja.executeUpdate("DELETE FROM tabelawektorow");
  184.  
  185.             for (Wektory w : kolekcja) {
  186.                 String sql = "INSERT INTO tabelawektorow SET ";
  187.                 sql += "Nazwa='" + w.getNazwaWektora() + "', ";
  188.                 sql += "WspX='" + w.getWspX() + "', ";
  189.                 sql += "WspY='" + w.getWspY() + "' ";
  190.                 System.out.println(sql);
  191.  
  192.                 instrukcja.executeUpdate(sql);
  193.             }
  194.             polaczenie.close();
  195.         } catch (InstantiationException e) {
  196.             e.printStackTrace();
  197.         } catch (IllegalAccessException e) {
  198.             e.printStackTrace();
  199.         } catch (ClassNotFoundException e) {
  200.             e.printStackTrace();
  201.         } catch (SQLException e) {
  202.             e.printStackTrace();
  203.         }
  204.     }
  205.  
  206.     /* +++          OBSŁUGA ELEMENTOW           +++ */
  207.     @Override
  208.     public void actionPerformed(ActionEvent e) {
  209.         if (e.getActionCommand().equals("Dodaj")) {
  210.             Wektory w1 = new Wektory(pTekstoweNazwa.getText(), Integer.parseInt(this.pTekstoweX.getText()), Integer.parseInt(this.pTekstoweY.getText()));
  211.  
  212.             Object[] tablicaDanych = new Object[3];
  213.             tablicaDanych[0] = w1.getNazwaWektora();
  214.             tablicaDanych[1] = w1.getWspX();
  215.             tablicaDanych[2] = w1.getWspY();
  216.             kolekcja.add(w1);
  217.  
  218.             this.modelTabeli.addRow(tablicaDanych);
  219.         }
  220.  
  221.         if (e.getActionCommand().equals("Wczytaj XML")) {
  222.  
  223.             try {
  224.  
  225.                 DocumentBuilderFactory fabr = DocumentBuilderFactory.newInstance();
  226.                 DocumentBuilder parser = fabr.newDocumentBuilder();
  227.                 Document dokument = parser.parse("C:\\Users\\student.INFORMATYKA\\Documents\\GuiClass\\simple.xml");
  228.  
  229.                 Element root = dokument.getDocumentElement(); //pobiera el. gl. //<wektory>
  230.                 NodeList linie = root.getElementsByTagName("wektor");
  231.  
  232.                 for (int i = 0; i < linie.getLength(); i++) {
  233.  
  234.                     String nazwa = ((Element) linie.item(i)).getAttribute("nazwa");
  235.                     int wX = Integer.parseInt(((Element) linie.item(i)).getAttribute("x"));
  236.                     int wY = Integer.parseInt(((Element) linie.item(i)).getAttribute("y"));
  237.  
  238.                     Wektory w1 = new Wektory(nazwa, wX, wY); //tworzenie nowego obiektu
  239.  
  240.                     Object[] tablicaDanych = new Object[3];
  241.                     tablicaDanych[0] = nazwa;
  242.                     tablicaDanych[1] = wX;
  243.                     tablicaDanych[2] = wY;
  244.                     kolekcja.add(w1);
  245.  
  246.                     this.modelTabeli.addRow(tablicaDanych);
  247.                 }
  248.  
  249.             } catch (Exception ex) {
  250.             }
  251.         }
  252.  
  253.         if (e.getActionCommand().equals("Zapisz XML")) {
  254.             try {
  255.  
  256.                 DocumentBuilderFactory fabr = DocumentBuilderFactory.newInstance();
  257.                 DocumentBuilder parser = fabr.newDocumentBuilder();
  258.                 Document dokument = parser.newDocument();
  259.  
  260.                 Element root = dokument.createElement("wektory");
  261.                 dokument.appendChild(root);
  262.  
  263.                 for (Wektory w : kolekcja) {
  264.                     Element k = dokument.createElement("wektor");
  265.                     k.setAttribute("nazwa", w.getNazwaWektora());
  266.                     k.setAttribute("x", String.valueOf(w.getWspX()));
  267.                     k.setAttribute("y", String.valueOf(w.getWspY()));
  268.                     root.appendChild(k);
  269.                 }
  270.                 Transformer przekszt = TransformerFactory.newInstance().newTransformer();
  271.                 Source zrodlo = new DOMSource(dokument);
  272.  
  273.                 Result wyjscie = new StreamResult("test.xml");
  274.                 przekszt.transform(zrodlo, wyjscie);
  275.  
  276.             } catch (Exception ex) {
  277.             }
  278.         }
  279.  
  280.         if (e.getActionCommand().equals("Odczytaj Baze")) {
  281.             wczytajBaze();
  282.         }
  283.  
  284.         if (e.getActionCommand().equals("Zapisz Baze")) {
  285.             zapiszBaze();
  286.         }
  287.     }
  288.  
  289. }
  290. /*
  291.  !!! Zrobic interfejs !!!
  292.  a) pola tekstowe do wprowadzania danych + etykiety
  293.  b) utworzyc tabele z danymi
  294.  c) przyciski "dodaj"
  295.  //Ma sie utworzyc nowy obiekt + wpis do tabeli
  296.  //JFrame na zewnatrz
  297.  //JPanel w srodku i zagniezdzone
  298.  //JLabel - etyki
  299.  //JTextField - area txt
  300.  //JButton - przycisk
  301.  //JTable - tabela // + klasa DefaultTableModel
  302.  */
  303.  
  304. //MySQL Connector
  305. // https://dev.mysql.com/downloads/connector/j/5.1.html
  306.  
  307. // ================================================== //
  308.  
  309.  
  310.  
  311. /*
  312.  * To change this license header, choose License Headers in Project Properties.
  313.  * To change this template file, choose Tools | Templates
  314.  * and open the template in the editor.
  315.  */
  316. package guiclass;
  317.  
  318. /**
  319.  *
  320.  * @author student
  321.  */
  322. public class Wektory {
  323.  
  324.     private String nazwaWektora;
  325.     private int wspX, wspY;
  326.    
  327.  
  328.     public String getNazwaWektora() {
  329.         return nazwaWektora;
  330.     }
  331.  
  332.     public void setNazwaWektora(String nazwaWektora) {
  333.         this.nazwaWektora = nazwaWektora;
  334.     }
  335.  
  336.     public int getWspX() {
  337.         return wspX;
  338.     }
  339.  
  340.     public void setWspX(int wspX) {
  341.         this.wspX = wspX;
  342.     }
  343.  
  344.     public int getWspY() {
  345.         return wspY;
  346.     }
  347.  
  348.     public void setWspY(int wspY) {
  349.         this.wspY = wspY;
  350.     }
  351.  
  352.     public Wektory(String nazwaWektora, int wspX, int wspY) {
  353.         this.nazwaWektora = nazwaWektora;
  354.         this.wspX = wspX;
  355.         this.wspY = wspY;        
  356.     }
  357. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement