Пытаюсь написать дождь на java - AWT, Swing

372
03 сентября 2017, 01:32

Я пытаюсь написать дождь на java, но пока ни как не могу заставить дождинку двигаться:

package com.company;
public class Main {
    public static void main(String[] args) {
        MyWindow myWindow =new MyWindow();
    }
}
package com.company;
import javax.swing.*;
import javax.swing.plaf.ColorUIResource;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
class MyWindow extends JFrame
{
    public MyWindow()
    {
        setTitle("My Window");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setBounds(300,300,500,400);
        setLayout(new BorderLayout());
        RainField RF=new RainField();
        add(RF,BorderLayout.CENTER);
        setResizable(true);
        setVisible(true);
    }
}
package com.company;
import javax.swing.*;
import java.awt.*;
public class RainField extends JPanel {
    public int i=0;
    protected float x=getWidth()/2,y=0,yspeed=1;
    public RainField() {
        for (i=0;i<1000;i++){
            y+=10;
            //    repaint();
        }
    }
    protected void paintComponent (Graphics g){
        setBackground(Color.orange);
        int x = getWidth() / 2;
        int y = 99;
        g.setColor(Color.BLUE);
        g.drawLine(x, y, x, y + 10);
    }
}
Answer 1

Main - без изменений

    package com.company;
    class Main {
        public static void main(String[] args) {
            MyWindow myWindow = new MyWindow();
        }
    }

Далее много ошибок у вас.

MyWindow

    package com.company;
    import javax.swing.*;
    import java.awt.*;
    class MyWindow extends JFrame
    {
        public MyWindow()
        {
            setTitle("My Window");
            setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            setBounds(300,300,500,400);
            setLayout(new BorderLayout());
            RainField RF = new RainField();
            add(RF,BorderLayout.CENTER);
            // ширина у JPanel появляется после
            // того, как он становится частью JFrame
            RF.setX(getWidth()/2);
            setResizable(true);
            setVisible(true);
            // Создаем поток, в котором будем
            // перерисовывать JFrame
            Thread thread = new Thread(RF);
            thread.start();
        }
    }

RainField

    package com.company;
    import javax.swing.*;
    import java.awt.*;
    // Добавляем интерфейс Runnable
    public class RainField extends JPanel implements Runnable {
        public int i = 0;
        protected int x, y;
        // Добавляем сеттер для (Х)
        public void setX(int x) {
            this.x = x;
        }
        // Определяем функцию для потока
        @Override
        public void run() {
            for (i=0;i<1000;i++){
                // Указываем задержку перед изменением
                // координаты (Х),
                // чтобы глаз что-то заметить успел
                try {
                    Thread.sleep(60);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                y += 10;
                if (y > getHeight()) {
                    y = 0;
                }
                // Обновляем отображение
                repaint();
            }
        }
        @Override
        protected void paintComponent (Graphics g){
            // Эту строчку обязательно надо добавить
            // чтобы лишних глюков не было
            super.paintComponent(g);
            // Ну и сама перерисовка
            setBackground(Color.orange);
            g.setColor(Color.BLUE);
            g.drawLine(x, y, x, y + 10);
        }
    }
READ ALSO
Как парсить целую страничку html в android?

Как парсить целую страничку html в android?

К примеру, есть страничка в нэте с новостьюВ ней поочередно идут: Название статьи Краткое описание Фотография 1 Еще немного текста Фотография...

398
интерактивная карта на Drupal

интерактивная карта на Drupal

Подскажите в чем проблема может быть, карта рассыпалась, по сайту не каких работ и не было, только было просто изменено имя сотрудника в контактах,...

369