Форма JFrame - Java вернула: 1 | СТРОИТЬ НЕУДАЧИ - PullRequest
0 голосов
/ 06 января 2019

Я пытаюсь сделать светофор на Java, но когда я запускаю свое приложение, я вижу черный экран, и когда выполнение заканчивается, java выдает мне эту ошибку: «Java вернул: 1». Только когда цикл for заканчивается, светофор загружается, но в любом случае я получаю ошибку, упомянутую выше. Вот код панели (которая содержит светофор), которую я положил в форму.

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JPanel;

public class TrafficlightPanel extends JPanel implements MouseListener{

    public void waitTime(long time){
        try {
            Thread.sleep(time);
        }
        catch (InterruptedException ex) {

        }
    }

    @Override
    public void mouseClicked(MouseEvent e) {
    }

    @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 paintComponent(Graphics g) { 

        g.setColor(Color.BLACK);
        g.fillRect(5, 5, 60, 160);

        g.setColor(Color.GRAY);
        g.fillOval(15, 15, 40, 40);
        g.fillOval(15, 65, 40, 40);
        g.fillOval(15, 115, 40, 40);

        for(int i = 0; i < 3; i++){
            g.setColor(Color.GRAY);
            g.fillOval(15, 115, 40, 40);

            g.setColor(Color.RED);
            g.fillOval(15, 15, 40, 40);

            waitTime(3000);

            g.setColor(Color.GRAY);
            g.fillOval(15, 15, 40, 40);

            g.setColor(Color.YELLOW);
            g.fillOval(15, 65, 40, 40);

            waitTime(1500);

            g.setColor(Color.GRAY);
            g.fillOval(15, 65, 40, 40);

            g.setColor(Color.GREEN);
            g.fillOval(15, 115, 40, 40);

            waitTime(3000);

        }
    }
}

Можете ли вы помочь мне? Спасибо и извините за мой плохой английский.

1 Ответ

0 голосов
/ 06 января 2019
Java returned: 1

Это будет только для двух случаев: либо у вас ошибка с вашим непоказанным кодом, либо вы использовали System.exit(int status) со статусом 1.

Только после окончания цикла светофор загружен

Это потому, что весь ваш код находится в цикле for.

Полагаю, у вас есть проблема в методе wait(long time) и вам следует использовать рабочий качания вместо спящих потоков качаний, поскольку они считаются небезопасными

...