Кнопка Java собирается в неправильное место в коде. - PullRequest
0 голосов
/ 10 ноября 2018

так что я делаю проект для своего научного класса, но вопросы не работают. Что я пытаюсь сделать, так это когда я нажимаю на ответ на первый вопрос, я хочу, чтобы он перешел ко второму вопросу, но вместо этого он переходит к последнему вопросу. Я очень плохо знаком с Java (я начал на прошлой неделе), но у меня есть базовый опыт работы на других языках. Буду признателен за любую помощь, спасибо.

import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;

public class Window {

    JFrame window;
    Container con;
    JPanel titlenamePanel, startButtonPanel, mainTextPanel, ChoiceButtonPanel;
    JLabel titlenameLabel;
    Font titleFont = new Font("Times New Roman", Font.PLAIN, 28);
    Font normalFont = new Font("Times New Roman", Font.PLAIN, 18);
    JButton startButton, choice1, choice2, choice3, choice4, choice5, choice6;
    JTextArea mainTextArea;
    String Progress, yourChoice, Wind, Rain, Location, Cloud;
    int Temp, Hum;


    TitleScreenHandler tsHandler = new TitleScreenHandler();
    ChoiceHandler chandler = new ChoiceHandler();

    public static void main(String[] args) {


        new Window();
    }

        public Window(){

            window = new JFrame();
            //width x height
            window.setSize(800, 600);
            window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            window.getContentPane().setBackground(Color.black);
            window.setLayout(null);
            window.setVisible(true);
            con = window.getContentPane();

            titlenamePanel = new JPanel();
            titlenamePanel.setBounds(100, 100, 600, 150);
            titlenamePanel.setBackground(Color.black);
            titlenameLabel = new JLabel("Weather Genie");
            titlenameLabel.setForeground(Color.WHITE);
            titlenameLabel.setFont(titleFont);

            startButtonPanel = new JPanel();
            startButtonPanel.setBounds(300, 400, 200, 100);
            startButtonPanel.setBackground(Color.black);

            startButton = new JButton("Start");
            startButton.setBackground(Color.black);
            startButton.setForeground(Color.white);
            startButton.setFont(normalFont);
            startButton.addActionListener(tsHandler);

            titlenamePanel.add(titlenameLabel);
            startButtonPanel.add(startButton);

            con.add(titlenamePanel);
            con.add(startButtonPanel);

        }

        public void createWindowScreen() {

            titlenamePanel.setVisible(false);
            startButtonPanel.setVisible(false);
            // Text Panel
            mainTextPanel = new JPanel();
            mainTextPanel.setBounds(100, 100, 600, 250);
            mainTextPanel.setBackground(Color.black);
            con.add(mainTextPanel);
            // Add Texts 
            mainTextArea = new JTextArea("Please answer the following questions.");
            mainTextArea.setBounds(100, 100, 600, 250);
            mainTextArea.setBackground(Color.black);
            mainTextArea.setForeground(Color.white);
            mainTextArea.setFont(normalFont);
            mainTextArea.setLineWrap(true);
            mainTextPanel.add(mainTextArea);
            // Button Panel
            ChoiceButtonPanel = new JPanel();
            ChoiceButtonPanel.setBounds(250, 350, 300, 150);
            ChoiceButtonPanel.setBackground(Color.black);
            ChoiceButtonPanel.setLayout(new GridLayout(3,2));
            con.add(ChoiceButtonPanel);
            // Buttons
            choice1 = new JButton("Choice 1");
            choice1.setBackground(Color.DARK_GRAY);
            choice1.setForeground(Color.white);
            choice1.setFont(normalFont);
            choice1.addActionListener(chandler);
            ChoiceButtonPanel.add(choice1);
            choice1.setActionCommand("c1");
            choice2 = new JButton("Choice 2");
            choice2.setBackground(Color.DARK_GRAY);
            choice2.setForeground(Color.white);
            choice2.setFont(normalFont);
            choice2.addActionListener(chandler);
            ChoiceButtonPanel.add(choice2);
            choice2.setActionCommand("c2");
            choice3 = new JButton("Choice 3");
            choice3.setBackground(Color.DARK_GRAY);
            choice3.setForeground(Color.white);
            choice3.setFont(normalFont);
            choice3.addActionListener(chandler);
            ChoiceButtonPanel.add(choice3);
            choice3.setActionCommand("c3");
            choice4 = new JButton("Choice 4");
            choice4.setBackground(Color.DARK_GRAY);
            choice4.setForeground(Color.white);
            choice4.setFont(normalFont);
            choice4.addActionListener(chandler);
            ChoiceButtonPanel.add(choice4);
            choice4.setActionCommand("c4");
            choice5 = new JButton("Choice 5");
            choice5.setBackground(Color.DARK_GRAY);
            choice5.setForeground(Color.white);
            choice5.setFont(normalFont);
            choice5.addActionListener(chandler);
            ChoiceButtonPanel.add(choice5);
            choice5.setActionCommand("c5");
            choice6 = new JButton("Choice 6");
            choice6.setBackground(Color.DARK_GRAY);
            choice6.setForeground(Color.white);
            choice6.setFont(normalFont);
            choice6.addActionListener(chandler);
            ChoiceButtonPanel.add(choice6);
            choice6.setActionCommand("c6");
            varSetup();
        }   

        public void varSetup() {
            Temp = 80;
            Hum = 65; 
            Location = "South";
            Rain = "No";
            Wind = "No";
            Cloud = "Clear";
            CloudQuestion();
        }

        public void CloudQuestion(){
            Progress = "CloudQ";
            mainTextArea.setText("What do the clouds look like?");
            choice1.setText("High and Dark");
            choice2.setText("High and Bright");
            choice3.setText("Low and Dark");
            choice4.setText("Low and Bright");
            choice5.setText("Clear");
            choice6.setText("Foggy");
        }
        public void TempQuestion(){
            Progress = "TempQ";
            mainTextArea.setText("What tmperature is it outside?");
            choice1.setText("90-110");
            choice2.setText("70-89");
            choice3.setText("50-69");
            choice4.setText("30-49");
            choice5.setText("10-29");
            choice6.setText("0-10");
        }
        public void HumQuestion() {
            Progress = "HumQ";
            mainTextArea.setText("How Humid is it outside? \nEx. The Average Household humidity is 65");
            choice1.setText("90-100");
            choice2.setText("70-89");
            choice3.setText("50-69");
            choice4.setText("30-49");
            choice5.setText("10-29");
            choice6.setText("");
            }
        public void WindQuestion(){
            Progress = "WindQ";
            mainTextArea.setText("Has it been windy outside today?");
            choice1.setText("Yes");
            choice2.setText("No");
            choice3.setText("");
            choice4.setText("");
            choice5.setText("");
            choice6.setText("");
            }
        public void RainQuestion() {
            Progress = "RainQ";
            mainTextArea.setText("Has it Rained this week?");
            choice1.setText("1-2 Times");
            choice2.setText("3-4 Times");
            choice3.setText("5 or more Times");
            choice4.setText("None");
            choice5.setText("");
            choice6.setText("");
            }
        public void LocQuestion() {
            Progress = "LocQ";
            mainTextArea.setText("What part of the US are you in? \nExample, florida would be East \nSomebody in Nebraska or Kansas would say Central. ");
            choice1.setText("North");
            choice2.setText("South");
            choice3.setText("East");
            choice4.setText("West");
            choice5.setText("Central");
            choice6.setText("");
            }

        public class ChoiceHandler implements ActionListener{

            public void actionPerformed(ActionEvent event) {

                String yourChoice = event.getActionCommand();

                switch (Progress) {
                case "CloudQ": 
                    switch(yourChoice) {
                        case"c1":
                            Cloud = "HD";
                            TempQuestion();
                            break;
                        case"c2":
                            Cloud = "HB";
                            TempQuestion();
                            break;
                        case"c3":
                            Cloud = "LD";
                            TempQuestion();
                            break;
                        case"c4":
                            Cloud = "LB";
                            TempQuestion();
                            break;
                        case"c5":
                            Cloud = "Clear";
                            TempQuestion();  
                            break;
                        case"c6":
                            Cloud = "Foggy";
                            TempQuestion();
                            break;
                        }
                case "TempQ": 
                    switch(yourChoice) {
                        case"c1":
                            Temp = 90110;
                            HumQuestion();
                            break;
                        case"c2":
                            Temp = 7089;
                            HumQuestion();
                            break;
                        case"c3":
                            Temp = 5069;
                            HumQuestion();
                            break;
                        case"c4":
                            Temp = 3049;
                            HumQuestion();
                            break;
                        case"c5":
                            Temp = 1029;
                            HumQuestion();
                            break;
                        case"c6":
                            Temp = 010;
                            HumQuestion();
                            break;
                        }
                case "HumQ":
                    switch(yourChoice) {
                        case"c1": 
                            Hum = 90100; WindQuestion();
                            break;
                        case"c2": 
                            Hum = 7089; WindQuestion();
                            break;
                        case"c3": 
                            Hum = 5069; WindQuestion();
                            break;
                        case"c4": 
                            Hum = 3049; WindQuestion();
                            break;
                        case"c5": 
                            Hum = 1029; 
                            WindQuestion();
                            break;
                        case"c6": 
                            HumQuestion();
                            break;
                        }
                case "WinQ":
                    switch(yourChoice) {
                        case"c1": 
                            Wind = "Yes"; 
                            RainQuestion();
                            break;
                        case"c2": 
                            Wind = "No"; 
                            RainQuestion();
                            break;
                        case"c3": 
                            WindQuestion();
                            break;
                        case"c4": 
                            WindQuestion();
                            break;
                        case"c5": 
                            WindQuestion();
                            break;
                        case"c6": 
                            WindQuestion();
                            break;
                        }
                case "RainQ":
                    switch(yourChoice) {
                        case"c1": 
                            Rain = "12"; 
                            LocQuestion();
                            break;
                        case"c2": 
                            Rain = "34"; 
                            LocQuestion();
                            break;
                        case"c3": 
                            Rain = "5+"; 
                            LocQuestion();
                            break;
                        case"c4": 
                            Rain = "None"; 
                            LocQuestion();
                            break;
                        case"c5": 
                            RainQuestion();
                            break;
                        case"c6": 
                            RainQuestion();
                            break;
                        }
                case "LocQ":
                    switch(yourChoice) {
                        case"c1": 
                            Location = "North"; results();break;
                        case"c2": 
                            Location = "South"; results();break;
                        case"c3": 
                            Location = "East"; results();break;
                        case"c4": 
                            Location = "West"; results();break;
                        case"c5": 
                            Location = "Central"; results();break;
                        case"c6": 
                            LocQuestion();
                            break;
                        }
                    break;
                }   
            }
        }
        public void results() {

        }
        public class TitleScreenHandler implements ActionListener{

            public void actionPerformed(ActionEvent event) {

                createWindowScreen();
            }
        }
}

1 Ответ

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

У вас есть оператор switch внутри другого оператора switch, во внутреннем операторе switch вы правильно используете break, однако вы никогда не нарушаете после внутреннего оператора switch, см. Код ниже (только часть вашего кода) чтобы увидеть, чего вам не хватает.Я пометил операторы break // Add this.

. Неиспользование break вызывает его выполнение каждый case в case, с которым он совпал.Это будет происходить до тех пор, пока не будет достигнут первый break или не закончится switch.

switch (Progress) {
case "CloudQ":
    switch (yourChoice) {
    case "c1":
        Cloud = "HD";
        TempQuestion();
        break;
    case "c2":
        Cloud = "HB";
        TempQuestion();
        break;
    case "c3":
        Cloud = "LD";
        TempQuestion();
        break;
    case "c4":
        Cloud = "LB";
        TempQuestion();
        break;
    case "c5":
        Cloud = "Clear";
        TempQuestion();
        break;
    case "c6":
        Cloud = "Foggy";
        TempQuestion();
        break;
    }
    break; // Add this
case "TempQ":
    switch (yourChoice) {
    case "c1":
        Temp = 90110;
        HumQuestion();
        break;
    case "c2":
        Temp = 7089;
        HumQuestion();
        break;
    case "c3":
        Temp = 5069;
        HumQuestion();
        break;
    case "c4":
        Temp = 3049;
        HumQuestion();
        break;
    case "c5":
        Temp = 1029;
        HumQuestion();
        break;
    case "c6":
        Temp = 010;
        HumQuestion();
        break;
    }
    break; // Add this
}
...