Что заставляет зеленый свет оставаться зеленым? - PullRequest
0 голосов
/ 28 ноября 2018

Извините за тупой вопрос, за мою домашнюю работу.Я должен сделать светофор, который меняет свет при нажатии кнопки.У меня он наполовину работает, проблема, с которой я сталкиваюсь, заключается в том, что зеленый свет горит во время красной фазы.Я делаю то же самое для всех трех фаз, поэтому я не понимаю, почему у него есть проблема только с этой одной фазой.Код:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class ButtonPanel extends JPanel {

int presses;

int gy=200;
int yy=130;
int ry=60;
int filly=ry;
int empty1=gy;
int empty2=yy;
private JButton push;
private JLabel label;
Color light=Color.RED;

public ButtonPanel () {
    presses=0;
    push=new JButton("Change Light");



    push.addActionListener(new ButtonListener());
    add(push);


    setBackground(Color.white);
    setPreferredSize(new Dimension(300,400));
}
public void paint(Graphics g) {
    super.paint(g);
    setBackground(Color.WHITE);

    g.drawOval(120,gy,50,50);
    g.drawOval(120,yy,50,50);
    g.drawOval(120,ry,50,50);
    g.drawRect(95, 50, 100, 210);
    g.setColor(light);
    g.fillOval(120, filly, 50, 50);
    g.setColor(Color.white);
    g.fillOval(120, empty1, 50, 50);
    g.fillOval(120, empty2, 50, 50);



}
public class ButtonListener implements ActionListener{

    public void actionPerformed(ActionEvent e) {
        System.out.println(presses);
        presses++;
        if(presses>2) {
            presses=0;
        }
        if(presses==0) {
            light=Color.red;
            filly=ry;
            System.out.println("check");
            empty1=gy;
            System.out.println("check");
            empty1=yy;
            repaint();
        }
        if(presses==1) {
            light=Color.yellow;
            filly=yy;
            empty1=ry;
            empty2=gy;
            repaint();
        }
        if(presses==2) {
            light=Color.green;
            filly=gy;
            empty1=ry;
            empty2=yy;
            repaint();
        }

        }

    }
}

Вот кадр и основная часть метода, если вы хотите его скомпилировать:

import javax.swing.JFrame;
public class TrafficFrame {

public static void main(String[] args) {
    JFrame frame= new JFrame("Traffic Light");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    ButtonPanel panel=new ButtonPanel();
    frame.getContentPane().add(panel);

    frame.pack();
    frame.setVisible(true);

}

}

1 Ответ

0 голосов
/ 28 ноября 2018

Выглядит как простая опечатка для меня.В этом случае, если вы устанавливаете empty1 дважды, а не empty2.

...