Задать вопрос
  • Размещение сайта на компьютере вместо хостинга?

    viktorvsk
    @viktorvsk
    Просто даже не рассматривайте такой вариант априори. Если действительно хотите понять, почему - создавайте вопрос "Почему нельзя использовать домашний компьютер как сервер", что бы не вводить других в заблуждение.

    Файлы (и изображения) нужно хранить в отдельных специальных местах, например Amazon S3 (так же есть много аналогов вплоть до "арендовать другой сервер с минимальным количество CPU/RAM и максимальным HDD диском, но это тоже плохой вариант):
    https://aws.amazon.com/ru/s3/pricing/

    И, конечно же, вам не нужны фотографии в том же качестве, что и на фотоаппарате, если вы хотите показать работу, а не продаете эти фото.
    Ответ написан
    7 комментариев
  • Как связать KeyListener с gui в java?

    @Che_Bu_Rashka
    наверное добавить лисенер на саму форму окна приложения, тогда событие будет обрабатываться во всех случаях, когда окно приложения активно.

    frame.addKeyListener(new MyKey());

    И нахрена там 2 раза создается
    Snake s = new Snake();
    в разных местах.

    Сделал. Вот так работает

    /src/application/Application.java
    package application;
    
    public class Application {
    
        public static Snake s;
    
        public static void main(String[] args) {
            s = new Snake();
            s.go();
        }
    }


    /src/application/Snake.java
    package application;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyAdapter;
    import javax.swing.*;
    import java.awt.event.KeyEvent;
    
    public class Snake extends JComponent {
    
        int x = 350;
        int y = 350;
        public MyPan drawPanel;
        JFrame frame;
        Timer timer = new Timer(100, new MyKey());
    
        public void go() {
            frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            drawPanel = new MyPan(this);
            timer.start();
            frame.getContentPane().add(drawPanel);
            frame.setSize(700, 700);
            frame.setVisible(true);
    
            frame.setFocusable(true);
            frame.setFocusTraversalKeysEnabled(false);
            frame.addKeyListener(new MyKey());
            frame.setFocusable(true);
        }
    
        public void moveRight() {
            x += 10;
            try {
                Thread.sleep(20);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public void moveLeft() {
            x -= 10;
            try {
                Thread.sleep(20);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public void moveDown() {
            y += 10;
            try {
                Thread.sleep(20);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public void moveUp() {
            y -= 10;
            try {
                Thread.sleep(20);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public class MyKey extends KeyAdapter implements ActionListener {
    
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
                    moveRight();
                }
                if (e.getKeyCode() == KeyEvent.VK_UP) {
                    moveUp();
                }
                if (e.getKeyCode() == KeyEvent.VK_LEFT) {
                    moveLeft();
                }
                if (e.getKeyCode() == KeyEvent.VK_DOWN) {
                    moveDown();
                }
            }
    
            @Override
            public void actionPerformed(ActionEvent e) {
                drawPanel.repaint();
            }
        }
    }


    /src/application/MyPan.java
    package application;
    
    import javax.swing.*;
    import java.awt.*;
    
    public class MyPan extends JPanel {
        //  Snake snake = new Snake();
    
        private Snake s;
    
        public MyPan(Snake ss) {
            s = ss;
        }
    
        public void paint(Graphics g) {
            g.setColor(Color.BLACK);
            g.fillRect(0, 0, 700, 700);
            g.setColor(Color.GREEN);
            g.fillRoundRect(s.x, s.y, 50, 50, 40, 40); 
        }
    }
    Ответ написан
    1 комментарий