JButtons are not being disabled when setEnabled(false); is called

26 Views Asked by At

So in this application, I have the option to create my own burgers but also have 3 commonly ordered burgers that can be selected and added to the order without building them from scratch. At the moment, I can build my own burger but also click on one of the favorite burger buttons and that causes a mix up in the orders. I want to make it so that when I click on beef, chicken, or fish buttons,the special order buttons will be disabled and I tried doing that by calling a method that sets all of them to setEnabled(false) and then another method to enable them once the burger being created is added. However, this isn't working as intended and the favburger buttons are never disabled. Why's that? What can I do to fix this?

import javax.swing.*;

import se.umu.cs.apjava.maxdonalds.burger.AbstractFactory;
import se.umu.cs.apjava.maxdonalds.burger.FavBurger;

import java.awt.*;

public class MaxDonaldsGuiBuilder {

private JCheckBox withKetchupButton;
private JCheckBox withMayoButton;
private BurgerOrderModel burgerOrderModel;
private ButtonGroup burgerGroup;
private JCheckBox withAioliButton;
private JCheckBox withTomatoButton;
private JCheckBox withPicklesButton;
private JCheckBox withLettuceButton;
private JButton favBurger1;
private JButton favBurger2;
private JButton favBurger3;

void buildGui() {
    burgerOrderModel = new BurgerOrderModel();
    var frame=new JFrame("MaxDonalds");


    JTextArea textArea = new JTextArea();
    frame.add(new JScrollPane(textArea), BorderLayout.CENTER);
    JComponent burgerPanel = buildBurgerPanel();
    JComponent orderPanel = buildOrderPanel(textArea);
    JComponent additionsPanel = buildSaucesPanel();
    JComponent vegetablesPanel = buildVegetablesPanel();
    JComponent favoriteBurgerPanel = favBurgerPanel();
    var topPanel=new JPanel();
    topPanel.setMinimumSize(new Dimension(1000,50));
    topPanel.add(burgerPanel);
    topPanel.add(vegetablesPanel);
    topPanel.add(additionsPanel);
    topPanel.add(favoriteBurgerPanel);

    topPanel.add(orderPanel);
    frame.add(topPanel,BorderLayout.NORTH);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setMinimumSize(new Dimension(1000,400));
    frame.setVisible(true);
    favBurger1 = new JButton();
    favBurger2 = new JButton();
    favBurger3 = new JButton();


}

private JComponent buildOrderPanel(JTextArea textArea) {
    Box orderPanel=new Box(BoxLayout.Y_AXIS);
    var printButton = new JButton("Print Order");
    printButton.addActionListener(e->{
        String orderString= burgerOrderModel.getOrderString();
        textArea.append(orderString);

    });
    var addButton = new JButton("Add Burger To Order");
    addButton.addActionListener(e->{
        if (burgerGroup.getSelection() == null) {
            burgerOrderModel.setType("Beef");
        }
        burgerOrderModel.addBurgerToOrder();
        //Enable the specials buttons again.
        enableSpecials();
        clearSelection();
    });
    orderPanel.add(addButton);
    orderPanel.add(printButton);
    orderPanel.add(Box.createGlue());
    return orderPanel;
}

private JComponent buildSaucesPanel() {
    var additionsPanel=new Box(BoxLayout.Y_AXIS);
    JLabel additions = new JLabel("Sauces");
    additions.setAlignmentX(Component.LEFT_ALIGNMENT);
    additionsPanel.add(additions);
    withKetchupButton = new JCheckBox("Ketchup");
    withKetchupButton.setAlignmentX(Component.LEFT_ALIGNMENT);
    withKetchupButton.addChangeListener(e->
        burgerOrderModel.setWithKetchup(withKetchupButton.isSelected())
    );
    additionsPanel.add(withKetchupButton);
    withMayoButton = new JCheckBox("Mayo");
    withMayoButton.setAlignmentX(Component.LEFT_ALIGNMENT);
    withMayoButton.addChangeListener(e->
        burgerOrderModel.setWithMayo(withMayoButton.isSelected())
    );
    additionsPanel.add(withMayoButton);
    withAioliButton = new JCheckBox("Aioli");
    withAioliButton.setAlignmentX(Component.LEFT_ALIGNMENT);
    withAioliButton.addChangeListener(e->
        burgerOrderModel.setWithAioli(withAioliButton.isSelected())
    );
    additionsPanel.add(withAioliButton);
    JComponent withTextPanel = getTextPanel();
    additionsPanel.add(withTextPanel);
    additionsPanel.add(Box.createGlue());
    return additionsPanel;
}

private JComponent buildVegetablesPanel() {
    var additionsPanel=new Box(BoxLayout.Y_AXIS);
    JLabel additions = new JLabel("Vegetables");
    additions.setAlignmentX(Component.LEFT_ALIGNMENT);
    additionsPanel.add(additions);
    withLettuceButton = new JCheckBox("Lettuce");
    withLettuceButton.setAlignmentX(Component.LEFT_ALIGNMENT);
    withLettuceButton.addChangeListener(e->
        burgerOrderModel.setWithLettuce(withLettuceButton.isSelected())
    );
    additionsPanel.add(withLettuceButton);
    withTomatoButton = new JCheckBox("Tomato");
    withTomatoButton.setAlignmentX(Component.LEFT_ALIGNMENT);
    withTomatoButton.addChangeListener(e->
        burgerOrderModel.setWithTomato(withTomatoButton.isSelected())
    );
    additionsPanel.add(withTomatoButton);
    withPicklesButton = new JCheckBox("Pickles");
    withPicklesButton.setAlignmentX(Component.LEFT_ALIGNMENT);
    withPicklesButton.addChangeListener(e->
        burgerOrderModel.setWithPickles(withPicklesButton.isSelected())
    );
    additionsPanel.add(withPicklesButton);
    JComponent withTextPanel = getTextPanel();
    additionsPanel.add(withTextPanel);
    additionsPanel.add(Box.createGlue());
    return additionsPanel;
}

private JComponent getTextPanel() {
    FlowLayout layout = new FlowLayout(FlowLayout.LEFT);
    layout.setHgap(0);
    layout.setVgap(0);
    var withTextPanel=new JPanel(layout);
    withTextPanel.setAlignmentX(Component.LEFT_ALIGNMENT);

    return withTextPanel;
}

private JComponent buildBurgerPanel() {
    var burgerPanel=new Box(BoxLayout.Y_AXIS);
    var chickenBurgerButton=new JRadioButton("ChickenBurger");
    chickenBurgerButton.addActionListener(e->{
        burgerOrderModel.setType("Chicken");
        //If the beef, chicken, or fish options are clicked, the favBurger buttons will be disabled.
        disableSpecials();
    });
    var beefBurgerButton=new JRadioButton("BeefBurger");
    beefBurgerButton.addActionListener(e->{
        burgerOrderModel.setType("Beef");
         disableSpecials();    
    });
    var fishBurgerButton = new JRadioButton("FishBurger");
    fishBurgerButton.addActionListener(e -> {
        burgerOrderModel.setType("Fish");
        disableSpecials();
    });
    burgerGroup = new ButtonGroup();
    burgerGroup.add(beefBurgerButton);
    burgerGroup.add(chickenBurgerButton);
    burgerGroup.add(fishBurgerButton);
    burgerPanel.add(new JLabel("Basic Burgers"));
    burgerPanel.add(beefBurgerButton);
    burgerPanel.add(chickenBurgerButton);
    burgerPanel.add(fishBurgerButton);
    return burgerPanel;
}

private void clearSelection() {
    withKetchupButton.setSelected(false);
    withMayoButton.setSelected(false);
    withAioliButton.setSelected(false);
    withTomatoButton.setSelected(false);
    withPicklesButton.setSelected(false);
    withLettuceButton.setSelected(false);
    burgerGroup.clearSelection();
}

private JComponent favBurgerPanel() 
{

    var favoriteBurgerPanel=new Box(BoxLayout.Y_AXIS);
    var favBurger1 = new JButton("Favorite Burger 1");
    favBurger1.addActionListener(e -> {
        burgerOrderModel.setType("special 1");
        burgerOrderModel.addBurgerToOrder();
        clearSelection();
    });
    var favBurger2 = new JButton("Favorite Burger 2");
    favBurger2.addActionListener(e -> {
        burgerOrderModel.setType("special 2");
        burgerOrderModel.addBurgerToOrder();
        clearSelection();
    });
    var favBurger3 = new JButton("Favorite Burger 3");
    favBurger3.addActionListener(e -> {
        burgerOrderModel.setType("special 3");
        burgerOrderModel.addBurgerToOrder();
        clearSelection();
    });

    favoriteBurgerPanel.add(new JLabel("Top Burgers"));
    favoriteBurgerPanel.add(favBurger1);
    favoriteBurgerPanel.add(favBurger2);
    favoriteBurgerPanel.add(favBurger3);
    return favoriteBurgerPanel;


}

private void enableSpecials()
{
    favBurger1.setEnabled(true);
    favBurger2.setEnabled(true);
    favBurger3.setEnabled(true);
}

private void disableSpecials()
{
    favBurger1.setEnabled(false);
    favBurger2.setEnabled(false);
    favBurger3.setEnabled(false);
}



}
0

There are 0 best solutions below