Advertisement
Guest User

Untitled

a guest
Dec 12th, 2019
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.89 KB | None | 0 0
  1. import java.awt.Color;
  2. import java.awt.Dimension;
  3. import java.awt.Graphics;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. import java.awt.event.KeyEvent;
  7. import java.awt.event.KeyListener;
  8. import java.awt.event.MouseEvent;
  9. import java.awt.event.MouseListener;
  10. import java.awt.event.MouseMotionListener;
  11. import java.util.Random;
  12. import java.util.TreeSet;
  13.  
  14. import javax.swing.BorderFactory;
  15. import javax.swing.JButton;
  16. import javax.swing.JFrame;
  17. import javax.swing.JMenu;
  18. import javax.swing.JMenuBar;
  19. import javax.swing.JMenuItem;
  20. import javax.swing.JOptionPane;
  21. import javax.swing.JPanel;
  22. import javax.swing.JScrollPane;
  23. import javax.swing.JTable;
  24. import javax.swing.ListSelectionModel;
  25. import javax.swing.table.DefaultTableModel;
  26.  
  27.  
  28. class MyWindow extends JFrame implements ActionListener{
  29.  
  30. private static final long serialVersionUID = 1L;
  31.  
  32. private final static String OPIS_PROGRAMU = "OPIS";
  33.  
  34.  
  35. JMenuBar menu = new JMenuBar();
  36. JMenu program = new JMenu("Program");
  37. JMenuItem autor = new JMenuItem("Autor");
  38. JMenuItem opis = new JMenuItem("Opis");
  39. JMenuItem zakoncz = new JMenuItem("Zakoncz");
  40.  
  41. MyPanel panel = new MyPanel();
  42.  
  43.  
  44. public static void main(String[] args) {
  45. new MyWindow();
  46. }
  47.  
  48.  
  49. MyWindow() {
  50. setTitle("Imie Naziwsko");
  51. setSize(500,500);
  52. setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  53.  
  54. autor.addActionListener(this);
  55. opis.addActionListener(this);
  56. zakoncz.addActionListener(this);
  57.  
  58. menu.add(program);
  59.  
  60. program.add(opis);
  61. program.add(autor);
  62. program.add(zakoncz);
  63.  
  64. setJMenuBar(menu);
  65. setContentPane(panel);
  66. setVisible(true);
  67. }
  68.  
  69.  
  70. @Override
  71. public void actionPerformed(ActionEvent e) {
  72. Object source = e.getSource();
  73.  
  74. if(source == autor) {
  75. JOptionPane.showMessageDialog(this,"Blablabla");
  76. }
  77. if(source == opis) {
  78. JOptionPane.showMessageDialog(this, OPIS_PROGRAMU);
  79. }
  80. if(source == zakoncz) {
  81. System.exit(0);
  82. }
  83.  
  84. }
  85. }
  86.  
  87.  
  88. class MyPanel extends JPanel implements ActionListener ,MouseListener, MouseMotionListener, KeyListener {
  89.  
  90. private static final long serialVersionUID = 1L;
  91.  
  92. int mouseX = 0;
  93. int mouseY = 0;
  94.  
  95.  
  96. Circle circleUnderCursor = null;
  97.  
  98. TreeSet<Circle> circles = new TreeSet<Circle>();
  99.  
  100. ViewCollection view;
  101.  
  102. JButton addRandom = new JButton("Dodaj losowe kolo");
  103. JButton delete = new JButton("Usun kola");
  104.  
  105.  
  106. public MyPanel() {
  107. addRandom.addActionListener(this);
  108. delete.addActionListener(this);
  109.  
  110. addMouseListener(this);
  111. addMouseMotionListener(this);
  112. addKeyListener(this);
  113. setFocusable(true);
  114. requestFocus();
  115.  
  116. view = new ViewCollection(circles, 150, 200);
  117.  
  118. add(addRandom);
  119. add(delete);
  120. add(view);
  121. }
  122.  
  123. private void moveCircle(int dx, int dy, Circle circle) {
  124. circle.setX(circle.getX()+dx);
  125. circle.setY(circle.getY()+dy);
  126. }
  127.  
  128. private void moveAllCircle(int dx, int dy) {
  129. for (Circle circle : circles) {
  130. moveCircle(dx, dy, circle);
  131. }
  132. }
  133.  
  134.  
  135. private void addCircle() {
  136.  
  137. String name = JOptionPane.showInputDialog(this,"Podaj nazw� ko�a:");
  138. Random rand = new Random();
  139. int x = rand.nextInt(400);
  140. int y = rand.nextInt(400);
  141. circles.add(new Circle(name,x,y));
  142. repaint();
  143. view.refreshView();
  144.  
  145. }
  146.  
  147. private void deleteAll() {
  148. circles.clear();
  149. repaint();
  150. view.refreshView();
  151. }
  152.  
  153. @Override
  154. public void paintComponent(Graphics g) {
  155. super.paintComponent(g);
  156. for(Circle circle : circles)
  157. circle.draw(g);
  158. }
  159.  
  160. @Override
  161. public void actionPerformed(ActionEvent e) {
  162. Object source = e.getSource();
  163.  
  164. if(source == addRandom) {
  165. addCircle();
  166.  
  167. }
  168. if(source == delete) {
  169. deleteAll();
  170. }
  171.  
  172. requestFocus();
  173. }
  174.  
  175. @Override
  176. public void mouseClicked(MouseEvent e) {
  177. String name = JOptionPane.showInputDialog(this,"Podaj nazw� ko�a:");
  178. circles.add(new Circle(name,e.getX(),e.getY()));
  179. repaint();
  180. view.refreshView();
  181. }
  182.  
  183. @Override
  184. public void mousePressed(MouseEvent e) {
  185.  
  186. }
  187.  
  188. @Override
  189. public void mouseReleased(MouseEvent e) {
  190.  
  191. }
  192.  
  193. @Override
  194. public void mouseEntered(MouseEvent e) {
  195.  
  196. }
  197.  
  198. @Override
  199. public void mouseExited(MouseEvent e) {
  200.  
  201. }
  202.  
  203.  
  204.  
  205. @Override
  206. public void mouseDragged(MouseEvent e) {
  207.  
  208. for(Circle c : circles) {
  209. c.move(e.getX(), e.getY());
  210. }
  211.  
  212. moveAllCircle(e.getX() - mouseX, e.getY() - mouseY);
  213. mouseX = e.getX();
  214. mouseY = e.getY();
  215. repaint();
  216. }
  217.  
  218.  
  219.  
  220. @Override
  221. public void mouseMoved(MouseEvent e) {
  222. mouseX = e.getX();
  223. mouseY = e.getY();
  224. repaint();
  225. }
  226.  
  227. @Override
  228. public void keyTyped(KeyEvent e) {
  229. char keyCode = e.getKeyChar();
  230. if(keyCode == 'c' || keyCode == 'C') {
  231. addCircle();
  232. }
  233. }
  234.  
  235. @Override
  236. public void keyPressed(KeyEvent e) {
  237. int dist;
  238. if (e.isShiftDown()) dist = 10;
  239. else dist = 1;
  240. switch (e.getKeyCode()) {
  241. case KeyEvent.VK_LEFT:
  242. moveAllCircle(-dist, 0);
  243. break;
  244. case KeyEvent.VK_RIGHT:
  245. moveAllCircle(dist, 0);
  246. break;
  247. case KeyEvent.VK_UP:
  248. moveAllCircle(0, -dist);
  249. break;
  250. case KeyEvent.VK_DOWN:
  251. moveAllCircle(0, dist);
  252. break;
  253. case KeyEvent.VK_DELETE:
  254. deleteAll();
  255. break;
  256. }
  257. repaint();
  258. }
  259.  
  260. @Override
  261. public void keyReleased(KeyEvent e) {
  262.  
  263. }
  264.  
  265.  
  266. }
  267.  
  268. class Circle implements Comparable<Circle>{
  269.  
  270. String name;
  271. int x;
  272. int y;
  273. int r = 20;
  274.  
  275. public void move(int dx,int dy) {
  276. this.x = dx;
  277. this.y = dy;
  278. }
  279.  
  280. public String getName() {
  281. return name;
  282. }
  283.  
  284. public void setName(String name) {
  285. this.name = name;
  286. }
  287.  
  288. public int getX() {
  289. return x;
  290. }
  291.  
  292. public void setX(int x) {
  293. this.x = x;
  294. }
  295.  
  296. public int getY() {
  297. return y;
  298. }
  299.  
  300. public void setY(int y) {
  301. this.y = y;
  302. }
  303.  
  304. public Circle(String name, int x, int y) {
  305. super();
  306. this.name = name;
  307. this.x = x;
  308. this.y = y;
  309. }
  310.  
  311.  
  312. public void draw(Graphics g) {
  313. g.setColor(Color.GREEN);
  314. g.fillOval(x-r, y-r, 2*r, 2*r);
  315. g.setColor(Color.BLACK);
  316. g.drawOval(x-r, y-r, 2*r, 2*r);
  317. g.drawString(name, x-r/4, y);
  318. }
  319.  
  320.  
  321.  
  322. @Override
  323. public int hashCode() {
  324. final int prime = 31;
  325. int result = 1;
  326. result = prime * result + ((name == null) ? 0 : name.hashCode());
  327. return result;
  328. }
  329.  
  330.  
  331. @Override
  332. public boolean equals(Object obj) {
  333. if (this == obj)
  334. return true;
  335. if (obj == null)
  336. return false;
  337. if (getClass() != obj.getClass())
  338. return false;
  339. Circle other = (Circle) obj;
  340. if (name == null) {
  341. if (other.name != null)
  342. return false;
  343. } else if (!name.equals(other.name))
  344. return false;
  345. return true;
  346. }
  347.  
  348. @Override
  349. public int compareTo(Circle c) {
  350. return this.name.compareTo(c.name);
  351. }
  352.  
  353. }
  354.  
  355. class ViewCollection extends JScrollPane {
  356.  
  357. private static final long serialVersionUID = 1L;
  358.  
  359. private TreeSet<Circle> circles;
  360. private JTable table;
  361. private DefaultTableModel tableModel;
  362.  
  363. public ViewCollection(TreeSet<Circle> circles, int width, int height) {
  364. this.circles = circles;
  365. setPreferredSize(new Dimension(width, height));
  366. setBorder(BorderFactory.createTitledBorder("Kolekcja"));
  367.  
  368. String[] tableHeader = {"Nazwa", "X", "Y" };
  369. tableModel = new DefaultTableModel(tableHeader, 0);
  370. table = new JTable(tableModel) {
  371.  
  372. private static final long serialVersionUID = 1L;
  373.  
  374. @Override
  375. public boolean isCellEditable(int rowIndex, int colIndex) {
  376. return false;
  377. }
  378. };
  379. table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  380. table.setRowSelectionAllowed(true);
  381. setViewportView(table);
  382. }
  383.  
  384. void refreshView() {
  385. tableModel.setRowCount(0);
  386. for (Circle circle : circles) {
  387. if (circle != null) {
  388. String[] row = { circle.getName(),"" + circle.getX(),
  389. "" + circle.getY() };
  390. tableModel.addRow(row);
  391. }
  392. }
  393. }
  394.  
  395.  
  396. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement