Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.KeyEvent;
- import java.awt.event.KeyListener;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseListener;
- import java.awt.event.MouseMotionListener;
- import java.util.Random;
- import java.util.TreeSet;
- import javax.swing.BorderFactory;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JMenu;
- import javax.swing.JMenuBar;
- import javax.swing.JMenuItem;
- import javax.swing.JOptionPane;
- import javax.swing.JPanel;
- import javax.swing.JScrollPane;
- import javax.swing.JTable;
- import javax.swing.ListSelectionModel;
- import javax.swing.table.DefaultTableModel;
- class MyWindow extends JFrame implements ActionListener{
- private static final long serialVersionUID = 1L;
- private final static String OPIS_PROGRAMU = "OPIS";
- JMenuBar menu = new JMenuBar();
- JMenu program = new JMenu("Program");
- JMenuItem autor = new JMenuItem("Autor");
- JMenuItem opis = new JMenuItem("Opis");
- JMenuItem zakoncz = new JMenuItem("Zakoncz");
- MyPanel panel = new MyPanel();
- public static void main(String[] args) {
- new MyWindow();
- }
- MyWindow() {
- setTitle("Imie Naziwsko");
- setSize(500,500);
- setDefaultCloseOperation(DISPOSE_ON_CLOSE);
- autor.addActionListener(this);
- opis.addActionListener(this);
- zakoncz.addActionListener(this);
- menu.add(program);
- program.add(opis);
- program.add(autor);
- program.add(zakoncz);
- setJMenuBar(menu);
- setContentPane(panel);
- setVisible(true);
- }
- @Override
- public void actionPerformed(ActionEvent e) {
- Object source = e.getSource();
- if(source == autor) {
- JOptionPane.showMessageDialog(this,"Blablabla");
- }
- if(source == opis) {
- JOptionPane.showMessageDialog(this, OPIS_PROGRAMU);
- }
- if(source == zakoncz) {
- System.exit(0);
- }
- }
- }
- class MyPanel extends JPanel implements ActionListener ,MouseListener, MouseMotionListener, KeyListener {
- private static final long serialVersionUID = 1L;
- int mouseX = 0;
- int mouseY = 0;
- Circle circleUnderCursor = null;
- TreeSet<Circle> circles = new TreeSet<Circle>();
- ViewCollection view;
- JButton addRandom = new JButton("Dodaj losowe kolo");
- JButton delete = new JButton("Usun kola");
- public MyPanel() {
- addRandom.addActionListener(this);
- delete.addActionListener(this);
- addMouseListener(this);
- addMouseMotionListener(this);
- addKeyListener(this);
- setFocusable(true);
- requestFocus();
- view = new ViewCollection(circles, 150, 200);
- add(addRandom);
- add(delete);
- add(view);
- }
- private void moveCircle(int dx, int dy, Circle circle) {
- circle.setX(circle.getX()+dx);
- circle.setY(circle.getY()+dy);
- }
- private void moveAllCircle(int dx, int dy) {
- for (Circle circle : circles) {
- moveCircle(dx, dy, circle);
- }
- }
- private void addCircle() {
- String name = JOptionPane.showInputDialog(this,"Podaj nazw� ko�a:");
- Random rand = new Random();
- int x = rand.nextInt(400);
- int y = rand.nextInt(400);
- circles.add(new Circle(name,x,y));
- repaint();
- view.refreshView();
- }
- private void deleteAll() {
- circles.clear();
- repaint();
- view.refreshView();
- }
- @Override
- public void paintComponent(Graphics g) {
- super.paintComponent(g);
- for(Circle circle : circles)
- circle.draw(g);
- }
- @Override
- public void actionPerformed(ActionEvent e) {
- Object source = e.getSource();
- if(source == addRandom) {
- addCircle();
- }
- if(source == delete) {
- deleteAll();
- }
- requestFocus();
- }
- @Override
- public void mouseClicked(MouseEvent e) {
- String name = JOptionPane.showInputDialog(this,"Podaj nazw� ko�a:");
- circles.add(new Circle(name,e.getX(),e.getY()));
- repaint();
- view.refreshView();
- }
- @Override
- public void mousePressed(MouseEvent e) {
- }
- @Override
- public void mouseReleased(MouseEvent e) {
- }
- @Override
- public void mouseEntered(MouseEvent e) {
- }
- @Override
- public void mouseExited(MouseEvent e) {
- }
- @Override
- public void mouseDragged(MouseEvent e) {
- for(Circle c : circles) {
- c.move(e.getX(), e.getY());
- }
- moveAllCircle(e.getX() - mouseX, e.getY() - mouseY);
- mouseX = e.getX();
- mouseY = e.getY();
- repaint();
- }
- @Override
- public void mouseMoved(MouseEvent e) {
- mouseX = e.getX();
- mouseY = e.getY();
- repaint();
- }
- @Override
- public void keyTyped(KeyEvent e) {
- char keyCode = e.getKeyChar();
- if(keyCode == 'c' || keyCode == 'C') {
- addCircle();
- }
- }
- @Override
- public void keyPressed(KeyEvent e) {
- int dist;
- if (e.isShiftDown()) dist = 10;
- else dist = 1;
- switch (e.getKeyCode()) {
- case KeyEvent.VK_LEFT:
- moveAllCircle(-dist, 0);
- break;
- case KeyEvent.VK_RIGHT:
- moveAllCircle(dist, 0);
- break;
- case KeyEvent.VK_UP:
- moveAllCircle(0, -dist);
- break;
- case KeyEvent.VK_DOWN:
- moveAllCircle(0, dist);
- break;
- case KeyEvent.VK_DELETE:
- deleteAll();
- break;
- }
- repaint();
- }
- @Override
- public void keyReleased(KeyEvent e) {
- }
- }
- class Circle implements Comparable<Circle>{
- String name;
- int x;
- int y;
- int r = 20;
- public void move(int dx,int dy) {
- this.x = dx;
- this.y = dy;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getX() {
- return x;
- }
- public void setX(int x) {
- this.x = x;
- }
- public int getY() {
- return y;
- }
- public void setY(int y) {
- this.y = y;
- }
- public Circle(String name, int x, int y) {
- super();
- this.name = name;
- this.x = x;
- this.y = y;
- }
- public void draw(Graphics g) {
- g.setColor(Color.GREEN);
- g.fillOval(x-r, y-r, 2*r, 2*r);
- g.setColor(Color.BLACK);
- g.drawOval(x-r, y-r, 2*r, 2*r);
- g.drawString(name, x-r/4, y);
- }
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((name == null) ? 0 : name.hashCode());
- return result;
- }
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- Circle other = (Circle) obj;
- if (name == null) {
- if (other.name != null)
- return false;
- } else if (!name.equals(other.name))
- return false;
- return true;
- }
- @Override
- public int compareTo(Circle c) {
- return this.name.compareTo(c.name);
- }
- }
- class ViewCollection extends JScrollPane {
- private static final long serialVersionUID = 1L;
- private TreeSet<Circle> circles;
- private JTable table;
- private DefaultTableModel tableModel;
- public ViewCollection(TreeSet<Circle> circles, int width, int height) {
- this.circles = circles;
- setPreferredSize(new Dimension(width, height));
- setBorder(BorderFactory.createTitledBorder("Kolekcja"));
- String[] tableHeader = {"Nazwa", "X", "Y" };
- tableModel = new DefaultTableModel(tableHeader, 0);
- table = new JTable(tableModel) {
- private static final long serialVersionUID = 1L;
- @Override
- public boolean isCellEditable(int rowIndex, int colIndex) {
- return false;
- }
- };
- table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
- table.setRowSelectionAllowed(true);
- setViewportView(table);
- }
- void refreshView() {
- tableModel.setRowCount(0);
- for (Circle circle : circles) {
- if (circle != null) {
- String[] row = { circle.getName(),"" + circle.getX(),
- "" + circle.getY() };
- tableModel.addRow(row);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement