简体   繁体   中英

Why Do the JButtons not work?

I am creating the game pacman and if you get killed by the monster it takes you to a questions panel

So I am asking some questions and I have JButtons that are the multiple choice buttons such as A, B, C, etc...

But when you click on the button, it shows a bunch of errors on the terminal...What is the problem and how can I fix it??

public class QuestionPanel extends JPanel {
        JRadioButton aButt, bButt, cButt, dButt, eButt; // buttons for the different colors the user can choose.

        int fontsize = 15;
        int ans = -1;
        int rand;
        MyPanel panel;

        public QuestionPanel() {
            panel = new MyPanel();
            this.add(panel);
        }

        class MyPanel extends JPanel
        {
            UserPanel user; // used for all controls on the left
            TextPanel text; // jtextarea for the quotation

            public MyPanel()
            {
                this.setLayout(new GridLayout(0, 2));
                user = new UserPanel();
                text = new TextPanel();
                this.add(user);
                this.add(text);
            }

            // User panel has Jradiobutton, Jbutton, and scroll bar
            class UserPanel extends JPanel implements ActionListener, AdjustmentListener // this is for the buttons and the scroll bar
            {
                JButton randbutton; // this is the random button

                RadioButton radioB;
                JScrollBar size; // size of the jScrollBar

                public UserPanel()
                {
                    setLayout(new GridLayout(3, 0));
                    setBackground(Color.lightGray);
                    randbutton = new JButton("PRESS FOR RANDOM QUESTION"); // random quote button
                    randbutton.addActionListener(this);
                    this.add(randbutton);

                    radioB = new RadioButton();
                    this.add(radioB);

                    size = new JScrollBar(JScrollBar.HORIZONTAL, 15, 1, 10, 20); // size of the scroll bar

                    size.addAdjustmentListener(this); // adding the scroll bar
                    this.add(size);
                }        

                public void adjustmentValueChanged(AdjustmentEvent e) // this is for the size of the scroll bar
                {
                    randommove = false;
                    fontsize = e.getValue(); // get the value of the scroll bar depending where you keep it or turn it
                    text.repaint();
                }

                // seperate class for radio button to allow three buttons
                // next to each other
                class RadioButton extends JPanel implements ActionListener
                {
                    ButtonGroup answers; // what color it is
                                        JButton a,b,c,d;

                    public RadioButton()
                    {
                        a = new JButton("A"); // A BUTTON
                                                a.addActionListener(this);
                                                this.add(a);

                                                b = new JButton("B"); //b button
                                                b.addActionListener(this);
                                                this.add(b);

                                                c = new JButton("C");
                                                c.addActionListener(this);
                                                this.add(c);

                                                d = new JButton("D");
                                                d.addActionListener(this);
                                                this.add(d);


                    }

                    public void actionPerformed(ActionEvent e)
                    {
                        randommove = false;
                                                String command = e.getActionCommand();

                                                if(rand == 0 && command.equals("A"))
                                                {
                                                    cards.show(c,"Game");
                                                }
                                                else
                                                {
                                                    cards.show(c,"Wrong");
                                                    System.out.println("hello");
                                                }

                                                if(rand == 1 && command.equals("B"))
                                                {
                                                    cards.show(c,"Game");
                                                }
                                                else
                                                {
                                                    cards.show(c,"Wrong");
                                                                                                        System.out.println("hello");

                                                }
                                                if(rand == 2 && command.equals("D"))
                                                {
                                                    cards.show(c,"Game");
                                                }
                                                else
                                                {
                                                    cards.show(c,"Wrong");
                                                                                                        System.out.println("hello");

                                                }
                                                if(rand == 3 && command.equals("B"))
                                                {
                                                    cards.show(c,"Game");
                                                }
                                                else{
                                                    cards.show(c,"Wrong");
                                                                                                        System.out.println("hello");

                                                }






                        text.repaint(); 
                    }
                }

                public void actionPerformed(ActionEvent e)
                {
                    randommove = true;
                    text.repaint();
                }
            }

You're not actually setting the action command of the buttons, you're just setting the text.

When you try and access the action command in the action listener, the value is null

You need to call JButton#setActionCommand to actually set, well, the action command

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM