blackpab

PO - l2 - GUI

Oct 17th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.00 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.io.File;
  11. import java.io.IOException;
  12. import java.util.ArrayList;
  13. import java.util.logging.Level;
  14. import java.util.logging.Logger;
  15. import javax.swing.JButton;
  16. import javax.swing.JFrame;
  17. import javax.swing.JLabel;
  18. import javax.swing.JPanel;
  19. import javax.swing.JScrollPane;
  20. import javax.swing.JTable;
  21. import javax.swing.JTextField;
  22. import javax.swing.table.DefaultTableModel;
  23. import javax.xml.parsers.DocumentBuilder;
  24. import javax.xml.parsers.DocumentBuilderFactory;
  25. import javax.xml.parsers.ParserConfigurationException;
  26. import javax.xml.transform.Result;
  27. import javax.xml.transform.Source;
  28. import javax.xml.transform.Transformer;
  29. import javax.xml.transform.TransformerFactory;
  30. import javax.xml.transform.dom.DOMSource;
  31. import javax.xml.transform.stream.StreamResult;
  32. import org.w3c.dom.*;
  33. import org.xml.sax.SAXException;
  34.  
  35. public class GuiClass extends JFrame implements ActionListener {
  36.  
  37. /* +++ DEKLARACJA ELEMENTOW +++ */
  38. JPanel panelGlowny, panelDanych, panelTabeli, panelPrzyciskow;
  39. JLabel etykietaNazwa, etykietaX, etykietaY;
  40. JTextField pTekstoweNazwa, pTekstoweX, pTekstoweY;
  41. JTable tabela;
  42. DefaultTableModel modelTabeli;
  43. JButton przyciskDodaj;
  44. JButton przyciskWczytajXML;
  45. JButton przyciskZapiszXML;
  46. Container zawartosc;
  47. ArrayList<Wektory> kolekcja;
  48.  
  49. public GuiClass(GraphicsConfiguration gc) {
  50. super(gc);
  51. }
  52.  
  53. public GuiClass() {
  54. //Ustawienia okna
  55. super("Wektory");
  56. this.setSize(800, 600);
  57. this.zawartosc = this.getContentPane(); //pobiera zawartosc ramki
  58.  
  59. kolekcja = new ArrayList<Wektory>();
  60.  
  61. /* +++ TWORZENIE ELEMENTOW +++ */
  62. //tworzenie panelow
  63. this.panelGlowny = new JPanel(new BorderLayout()); //stworzenie Panelu gl
  64. this.panelDanych = new JPanel(new GridLayout(3, 2)); //stworzenie Panelu danych
  65. this.panelPrzyciskow = new JPanel(new FlowLayout());
  66. this.panelTabeli = new JPanel(new BorderLayout()); //stworzenie Panelu Tabeli
  67. this.modelTabeli = new DefaultTableModel(); //stworzenie Stylu tabeli
  68.  
  69. //tworzenie etykiet
  70. this.etykietaNazwa = new JLabel("Nazwa Wektora: ");
  71. this.etykietaX = new JLabel("Wsp. X: ");
  72. this.etykietaY = new JLabel("Wsp Y: ");
  73.  
  74. //tworzenie pol tekstowych
  75. this.pTekstoweNazwa = new JTextField();
  76. this.pTekstoweX = new JTextField();
  77. this.pTekstoweY = new JTextField();
  78.  
  79. //Tworzenie przycisku
  80. this.przyciskDodaj = new JButton("Dodaj");
  81. this.przyciskDodaj.addActionListener(this);
  82.  
  83. this.przyciskWczytajXML = new JButton("Wczytaj XML");
  84. this.przyciskWczytajXML.addActionListener(this);
  85.  
  86. this.przyciskZapiszXML = new JButton("Zapisz XML");
  87. this.przyciskZapiszXML.addActionListener(this);
  88.  
  89. /* +++ DODAWANIE ELEMENTOW +++ */
  90. //Dodawanie elementow do tabeli
  91. this.modelTabeli.addColumn("Nazwa Wektora");
  92. this.modelTabeli.addColumn("Wsp. X");
  93. this.modelTabeli.addColumn("Wsp. Y");
  94. this.tabela = new JTable(this.modelTabeli);
  95.  
  96. //Dodanie Panelow
  97. this.zawartosc.add(this.panelGlowny);
  98. this.panelGlowny.add(this.panelDanych, BorderLayout.WEST);
  99. this.panelGlowny.add(this.panelPrzyciskow, BorderLayout.SOUTH);
  100. this.panelGlowny.add(this.panelTabeli, BorderLayout.CENTER);
  101. this.panelTabeli.add(new JScrollPane(this.tabela), BorderLayout.CENTER);
  102.  
  103. //Dodanie pol etykiet i pol tekstowych
  104. this.panelDanych.add(this.etykietaNazwa);
  105. this.panelDanych.add(this.pTekstoweNazwa);
  106.  
  107. this.panelDanych.add(this.etykietaX);
  108. this.panelDanych.add(this.pTekstoweX);
  109.  
  110. this.panelDanych.add(this.etykietaY);
  111. this.panelDanych.add(this.pTekstoweY);
  112.  
  113. //Dodawanie przycisku
  114. this.panelPrzyciskow.add(this.przyciskDodaj);
  115. this.panelPrzyciskow.add(this.przyciskWczytajXML);
  116. this.panelPrzyciskow.add(this.przyciskZapiszXML);
  117.  
  118. this.setDefaultCloseOperation(EXIT_ON_CLOSE);
  119. this.setVisible(true);
  120. }
  121.  
  122. public static void main(String[] args) {
  123. GuiClass obiekt = new GuiClass();
  124.  
  125. }
  126.  
  127. /* +++ OBSŁUGA ELEMENTOW +++ */
  128. @Override
  129. public void actionPerformed(ActionEvent e) {
  130. if (e.getActionCommand().equals("Dodaj")) {
  131. Wektory w1 = new Wektory(pTekstoweNazwa.getText(), Integer.parseInt(this.pTekstoweX.getText()), Integer.parseInt(this.pTekstoweY.getText()));
  132.  
  133. Object[] tablicaDanych = new Object[3];
  134. tablicaDanych[0] = w1.getNazwaWektora();
  135. tablicaDanych[1] = w1.getWspX();
  136. tablicaDanych[2] = w1.getWspY();
  137. kolekcja.add(w1);
  138.  
  139. this.modelTabeli.addRow(tablicaDanych);
  140. }
  141.  
  142. if (e.getActionCommand().equals("Wczytaj XML")) {
  143.  
  144. try {
  145.  
  146. DocumentBuilderFactory fabr = DocumentBuilderFactory.newInstance();
  147. DocumentBuilder parser = fabr.newDocumentBuilder();
  148. Document dokument = parser.parse("C:\\Users\\student.INFORMATYKA\\Documents\\GuiClass\\simple.xml");
  149.  
  150. Element root = dokument.getDocumentElement(); //pobiera el. gl. //<wektory>
  151. NodeList linie = root.getElementsByTagName("wektor");
  152.  
  153. for (int i = 0; i < linie.getLength(); i++) {
  154.  
  155. String nazwa = ((Element) linie.item(i)).getAttribute("nazwa");
  156. int wX = Integer.parseInt(((Element) linie.item(i)).getAttribute("x"));
  157. int wY = Integer.parseInt(((Element) linie.item(i)).getAttribute("y"));
  158.  
  159. Wektory w1 = new Wektory(nazwa, wX, wY); //tworzenie nowego obiektu
  160.  
  161. Object[] tablicaDanych = new Object[3];
  162. tablicaDanych[0] = nazwa;
  163. tablicaDanych[1] = wX;
  164. tablicaDanych[2] = wY;
  165. kolekcja.add(w1);
  166.  
  167. this.modelTabeli.addRow(tablicaDanych);
  168. }
  169.  
  170. } catch (Exception ex) {
  171. }
  172. }
  173.  
  174. if (e.getActionCommand().equals("Zapisz XML")) {
  175. try {
  176.  
  177. DocumentBuilderFactory fabr = DocumentBuilderFactory.newInstance();
  178. DocumentBuilder parser = fabr.newDocumentBuilder();
  179. Document dokument = parser.newDocument();
  180.  
  181. Element root = dokument.createElement("wektory");
  182. dokument.appendChild(root);
  183.  
  184. for (Wektory w : kolekcja) {
  185. Element k = dokument.createElement("wektor");
  186. k.setAttribute("nazwa", w.getNazwaWektora());
  187. k.setAttribute("x", String.valueOf(w.getWspX()));
  188. k.setAttribute("y", String.valueOf(w.getWspY()));
  189. root.appendChild(k);
  190. }
  191. Transformer przekszt=TransformerFactory.newInstance().newTransformer();
  192. Source zrodlo=new DOMSource(dokument);
  193.  
  194. Result wyjscie=new StreamResult("test.xml");
  195. przekszt.transform(zrodlo, wyjscie);
  196.  
  197. } catch (Exception ex) {
  198. }
  199. }
  200.  
  201. }
  202.  
  203. }
  204. /*
  205. !!! Zrobic interfejs !!!
  206. a) pola tekstowe do wprowadzania danych + etykiety
  207. b) utworzyc tabele z danymi
  208. c) przyciski "dodaj"
  209. //Ma sie utworzyc nowy obiekt + wpis do tabeli
  210. //JFrame na zewnatrz
  211. //JPanel w srodku i zagniezdzone
  212. //JLabel - etyki
  213. //JTextField - area txt
  214. //JButton - przycisk
  215. //JTable - tabela // + klasa DefaultTableModel
  216. */
  217.  
  218.  
  219.  
  220. // ================================================== //
  221.  
  222.  
  223. /*
  224. * To change this license header, choose License Headers in Project Properties.
  225. * To change this template file, choose Tools | Templates
  226. * and open the template in the editor.
  227. */
  228. package guiclass;
  229.  
  230. import java.util.ArrayList;
  231.  
  232. /**
  233. *
  234. * @author student
  235. */
  236. public class Wektory {
  237.  
  238. private String nazwaWektora;
  239. private int wspX, wspY;
  240.  
  241.  
  242. public String getNazwaWektora() {
  243. return nazwaWektora;
  244. }
  245.  
  246. public void setNazwaWektora(String nazwaWektora) {
  247. this.nazwaWektora = nazwaWektora;
  248. }
  249.  
  250. public int getWspX() {
  251. return wspX;
  252. }
  253.  
  254. public void setWspX(int wspX) {
  255. this.wspX = wspX;
  256. }
  257.  
  258. public int getWspY() {
  259. return wspY;
  260. }
  261.  
  262. public void setWspY(int wspY) {
  263. this.wspY = wspY;
  264. }
  265.  
  266. public Wektory(String nazwaWektora, int wspX, int wspY) {
  267. this.nazwaWektora = nazwaWektora;
  268. this.wspX = wspX;
  269. this.wspY = wspY;
  270. }
  271. }
Add Comment
Please, Sign In to add comment