Advertisement
sixshoot95

ZOki!

Jan 12th, 2017
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.87 KB | None | 0 0
  1. package gui;
  2.  
  3. import geometrija.Krug;
  4. import geometrija.Kvadrat;
  5. import geometrija.Linija;
  6. import geometrija.Oblik;
  7. import geometrija.Pravougaonik;
  8. import geometrija.Tacka;
  9. import java.awt.BorderLayout;
  10. import java.awt.Color;
  11. import java.awt.EventQueue;
  12. import java.awt.Graphics;
  13. import java.awt.GridBagConstraints;
  14. import java.awt.GridBagLayout;
  15. import java.awt.Insets;
  16. import java.awt.event.ActionEvent;
  17. import java.awt.event.ActionListener;
  18. import java.awt.event.MouseAdapter;
  19. import java.awt.event.MouseEvent;
  20. import java.io.PrintStream;
  21. import java.util.ArrayList;
  22. import javax.swing.JButton;
  23. import javax.swing.JFrame;
  24. import javax.swing.JLabel;
  25. import javax.swing.JOptionPane;
  26. import javax.swing.JPanel;
  27. import javax.swing.JTextField;
  28. import javax.swing.border.EmptyBorder;
  29.  
  30. public class Paint
  31. extends JFrame
  32. implements ActionListener
  33. {
  34. int pozicija = -1;
  35. int x;
  36. int y;
  37. int x1;
  38. int y1;
  39. int klik = 0;
  40. String nazivAlata = "Selekt ";
  41. public static final int xOfset = 125;
  42. public static final int yOfset = 62;
  43. boolean klik1 = true;
  44. ArrayList<Oblik> listaOblik = new ArrayList();
  45. private JPanel contentPane;
  46.  
  47. public static void main(String[] args)
  48. {
  49. EventQueue.invokeLater(new Runnable()
  50. {
  51. public void run()
  52. {
  53. try
  54. {
  55. Paint frame = new Paint();
  56. frame.setVisible(true);
  57. }
  58. catch (Exception e)
  59. {
  60. e.printStackTrace();
  61. }
  62. }
  63. });
  64. }
  65.  
  66. public Paint()
  67. {
  68. setDefaultCloseOperation(3);
  69. setBounds(100, 100, 450, 300);
  70. this.contentPane = new JPanel();
  71. this.contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  72. setContentPane(this.contentPane);
  73. this.contentPane.setLayout(new BorderLayout(0, 0));
  74.  
  75. JPanel pnlOpcije = new JPanel();
  76. this.contentPane.add(pnlOpcije, "West");
  77. GridBagLayout gbl_pnlOpcije = new GridBagLayout();
  78. gbl_pnlOpcije.columnWidths = new int[] { 61 };
  79. gbl_pnlOpcije.rowHeights = new int[] { 23 };
  80. gbl_pnlOpcije.columnWeights = new double[] { 1.0D, Double.MIN_VALUE };
  81. gbl_pnlOpcije.rowWeights = new double[] { 0.0D, 0.0D, 0.0D, 0.0D, 0.0D, Double.MIN_VALUE };
  82. pnlOpcije.setLayout(gbl_pnlOpcije);
  83.  
  84. JButton btnTacka = new JButton("Tacka");
  85. btnTacka.addActionListener(new ActionListener()
  86. {
  87. public void actionPerformed(ActionEvent arg0)
  88. {
  89. Paint.this.klik = 1;
  90. }
  91. });
  92. GridBagConstraints gbc_btnTacka = new GridBagConstraints();
  93. gbc_btnTacka.fill = 2;
  94. gbc_btnTacka.insets = new Insets(0, 0, 5, 0);
  95. gbc_btnTacka.anchor = 11;
  96. gbc_btnTacka.gridx = 0;
  97. gbc_btnTacka.gridy = 0;
  98. pnlOpcije.add(btnTacka, gbc_btnTacka);
  99.  
  100. JButton btnLinija = new JButton("Linija");
  101. btnLinija.addActionListener(new ActionListener()
  102. {
  103. public void actionPerformed(ActionEvent e)
  104. {
  105. Paint.this.klik = 2;
  106. }
  107. });
  108. GridBagConstraints gbc_btnLinija = new GridBagConstraints();
  109. gbc_btnLinija.fill = 2;
  110. gbc_btnLinija.insets = new Insets(0, 0, 5, 0);
  111. gbc_btnLinija.gridx = 0;
  112. gbc_btnLinija.gridy = 1;
  113. pnlOpcije.add(btnLinija, gbc_btnLinija);
  114.  
  115. JButton btnKrug = new JButton("Krug");
  116. btnKrug.addActionListener(new ActionListener()
  117. {
  118. public void actionPerformed(ActionEvent arg0)
  119. {
  120. Paint.this.klik = 3;
  121. }
  122. });
  123. GridBagConstraints gbc_btnKrug = new GridBagConstraints();
  124. gbc_btnKrug.fill = 2;
  125. gbc_btnKrug.insets = new Insets(0, 0, 5, 0);
  126. gbc_btnKrug.gridx = 0;
  127. gbc_btnKrug.gridy = 2;
  128. pnlOpcije.add(btnKrug, gbc_btnKrug);
  129.  
  130. JButton btnKvadrat = new JButton("Kvadrat");
  131. btnKvadrat.addActionListener(new ActionListener()
  132. {
  133. public void actionPerformed(ActionEvent e)
  134. {
  135. Paint.this.klik = 4;
  136. }
  137. });
  138. GridBagConstraints gbc_btnKvadrat = new GridBagConstraints();
  139. gbc_btnKvadrat.fill = 2;
  140. gbc_btnKvadrat.insets = new Insets(0, 0, 5, 0);
  141. gbc_btnKvadrat.gridx = 0;
  142. gbc_btnKvadrat.gridy = 3;
  143. pnlOpcije.add(btnKvadrat, gbc_btnKvadrat);
  144.  
  145. JButton btnPravougaonik = new JButton("Pravougaonik");
  146. btnPravougaonik.addActionListener(new ActionListener()
  147. {
  148. public void actionPerformed(ActionEvent e)
  149. {
  150. Paint.this.klik = 5;
  151. }
  152. });
  153. GridBagConstraints gbc_btnPravougaonik = new GridBagConstraints();
  154. gbc_btnPravougaonik.gridx = 0;
  155. gbc_btnPravougaonik.gridy = 4;
  156. pnlOpcije.add(btnPravougaonik, gbc_btnPravougaonik);
  157.  
  158. JPanel pnlRadnaPovrsia = new JPanel();
  159. this.contentPane.add(pnlRadnaPovrsia, "Center");
  160. pnlRadnaPovrsia.setLayout(new BorderLayout(0, 0));
  161.  
  162. JPanel panel = new JPanel();
  163. panel.addMouseListener(new MouseAdapter()
  164. {
  165. public void mouseClicked(MouseEvent e)
  166. {
  167. if ((Paint.this.klik == 2) && (Paint.this.klik1))
  168. {
  169. Paint.this.x1 = e.getX();
  170. Paint.this.y1 = e.getY();
  171. Paint.this.klik1 = false;
  172. }
  173. else
  174. {
  175. Paint.this.klik1 = true;
  176. Paint.this.x = e.getX();
  177. Paint.this.y = e.getY();
  178. Paint.this.repaint();
  179. }
  180. System.out.println(Paint.this.x + " " + Paint.this.y);
  181. }
  182. });
  183. panel.setBackground(Color.WHITE);
  184. pnlRadnaPovrsia.add(panel);
  185.  
  186. JPanel pnlIzmena = new JPanel();
  187. this.contentPane.add(pnlIzmena, "North");
  188. GridBagLayout gbl_pnlIzmena = new GridBagLayout();
  189. gbl_pnlIzmena.columnWidths = new int[] { 181, 0, 61 };
  190. gbl_pnlIzmena.rowHeights = new int[] { 23 };
  191. gbl_pnlIzmena.columnWeights = new double[] { 0.0D, 1.0D, 0.0D, 0.0D, 0.0D, Double.MIN_VALUE };
  192. gbl_pnlIzmena.rowWeights = new double[] { 1.0D, Double.MIN_VALUE };
  193. pnlIzmena.setLayout(gbl_pnlIzmena);
  194.  
  195. JButton btnSelekt = new JButton("Selekt");
  196. btnSelekt.addActionListener(new ActionListener()
  197. {
  198. public void actionPerformed(ActionEvent arg0)
  199. {
  200. Paint.this.klik = 0;
  201. }
  202. });
  203. JLabel lblAlat = new JLabel("Trenutno koristite:");
  204. GridBagConstraints gbc_lblAlat = new GridBagConstraints();
  205. gbc_lblAlat.insets = new Insets(0, 0, 0, 5);
  206. gbc_lblAlat.gridx = 0;
  207. gbc_lblAlat.gridy = 0;
  208. pnlIzmena.add(lblAlat, gbc_lblAlat);
  209.  
  210. JButton btnIzmena = new JButton("Izmena");
  211. btnIzmena.addActionListener(this);
  212.  
  213. JLabel lblIzabraniAlat = new JLabel(this.nazivAlata);
  214. GridBagConstraints gbc_lblIzabraniAlat = new GridBagConstraints();
  215. gbc_lblIzabraniAlat.gridwidth = 2;
  216. gbc_lblIzabraniAlat.insets = new Insets(0, 0, 0, 5);
  217. gbc_lblIzabraniAlat.gridx = 1;
  218. gbc_lblIzabraniAlat.gridy = 0;
  219. pnlIzmena.add(lblIzabraniAlat, gbc_lblIzabraniAlat);
  220. GridBagConstraints gbc_btnIzmena = new GridBagConstraints();
  221. gbc_btnIzmena.insets = new Insets(0, 0, 0, 5);
  222. gbc_btnIzmena.gridx = 3;
  223. gbc_btnIzmena.gridy = 0;
  224. pnlIzmena.add(btnIzmena, gbc_btnIzmena);
  225. GridBagConstraints gbc_btnSelekt = new GridBagConstraints();
  226. gbc_btnSelekt.anchor = 18;
  227. gbc_btnSelekt.gridx = 4;
  228. gbc_btnSelekt.gridy = 0;
  229. pnlIzmena.add(btnSelekt, gbc_btnSelekt);
  230. }
  231.  
  232. public void paint(Graphics g)
  233. {
  234. super.paint(g);
  235. switch (this.klik)
  236. {
  237. case 0:
  238. selektuj(g);
  239. break;
  240. case 1:
  241. tacka();
  242. this.nazivAlata = "Tacka";
  243. break;
  244. case 2:
  245. linija();
  246. break;
  247. case 3:
  248. krug();
  249. break;
  250. case 4:
  251. kvadrat();
  252.  
  253. break;
  254. case 5:
  255. pravougaonik();
  256. }
  257. crtaj(g);
  258. }
  259.  
  260. public void selektuj(Graphics g)
  261. {
  262. int pom = -1;
  263. for (int i = 0; i < this.listaOblik.size(); i++) {
  264. if ((((Oblik)this.listaOblik.get(i)).sadrzi(this.x + 125, this.y + 62)) &&
  265. (pom < i)) {
  266. pom = i;
  267. }
  268. }
  269. if (pom != -1)
  270. {
  271. ((Oblik)this.listaOblik.get(pom)).selektovan(g);
  272. this.pozicija = pom;
  273. }
  274. }
  275.  
  276. public void tacka()
  277. {
  278. Tacka t = new Tacka();
  279. t.pomeriNa(this.x + 125, this.y + 62);
  280. this.listaOblik.add(t);
  281. this.klik = 0;
  282. }
  283.  
  284. private void linija()
  285. {
  286. Linija l = new Linija(new Tacka(this.x1 + 125, this.y1 + 62), new Tacka(this.x + 125, this.y + 62));
  287. this.listaOblik.add(l);
  288. this.klik = 0;
  289. }
  290.  
  291. public void krug()
  292. {
  293. int r = 0;
  294. boolean pom;
  295. do
  296. {
  297. pom = false;
  298. String i = JOptionPane.showInputDialog(null, "Unesite poluprecnik kruga", "Unos", 3);
  299. if (i == null) {
  300. break;
  301. }
  302. try
  303. {
  304. r = Integer.parseInt(i);
  305. }
  306. catch (NumberFormatException ex)
  307. {
  308. pom = true;
  309. JOptionPane.showMessageDialog(null, "Greska, potrebno je uneti ceo broj", "Greska", 0);
  310. }
  311. } while (pom);
  312. this.listaOblik.add(new Krug(new Tacka(this.x + 125, this.y + 62), r));
  313. this.klik = 0;
  314. }
  315.  
  316. private void kvadrat()
  317. {
  318. int stranica = 0;
  319. boolean pom;
  320. do
  321. {
  322. pom = false;
  323. String i = JOptionPane.showInputDialog(null, "Unesite duzinu stranice", "Unos", 3);
  324. if (i == null) {
  325. break;
  326. }
  327. try
  328. {
  329. stranica = Integer.parseInt(i);
  330. }
  331. catch (NumberFormatException ex)
  332. {
  333. pom = true;
  334. JOptionPane.showMessageDialog(null, "Greska, potrebno je uneti ceo broj", "Greska", 0);
  335. }
  336. } while (pom);
  337. this.listaOblik.add(new Kvadrat(new Tacka(this.x + 125, this.y + 62), stranica));
  338. this.klik = 0;
  339. }
  340.  
  341. private void pravougaonik()
  342. {
  343. int sirina = 0;
  344. int visina = 0;
  345.  
  346. JTextField txtSirina = new JTextField();
  347.  
  348. Object[] message = {
  349. "Sirina:", txtSirina,
  350. "Visina:" };
  351. boolean unos;
  352. do
  353. {
  354. unos = true;
  355. String txtVisina = JOptionPane.showInputDialog(null, message, "Dimenzije pravougaonika", 2);
  356. if (txtVisina == null) {
  357. break;
  358. }
  359. try
  360. {
  361. sirina = Integer.parseInt(txtSirina.getText());
  362. }
  363. catch (NumberFormatException ex)
  364. {
  365. unos = false;
  366. }
  367. try
  368. {
  369. visina = Integer.parseInt(txtVisina);
  370. }
  371. catch (NumberFormatException ex)
  372. {
  373. unos = false;
  374. }
  375. if (!unos) {
  376. JOptionPane.showMessageDialog(null, "Greska, potrebno je uneti ceo broj", "Greska", 0);
  377. }
  378. } while (!unos);
  379. if (unos) {
  380. this.listaOblik.add(new Pravougaonik(new Tacka(this.x + 125, this.y + 62), sirina, visina));
  381. }
  382. this.klik = 0;
  383. }
  384.  
  385. public void crtaj(Graphics g)
  386. {
  387. for (int i = 0; i < this.listaOblik.size(); i++) {
  388. ((Oblik)this.listaOblik.get(i)).crtajSe(g);
  389. }
  390. }
  391.  
  392. public void actionPerformed(ActionEvent e)
  393. {
  394. Izmena iz = new Izmena(this.listaOblik.get(this.pozicija));
  395. iz.setDefaultCloseOperation(2);
  396. iz.setVisible(true);
  397. }
  398. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement