public void updateButtons() {
    // put total quacks in corner
    quackCountLabel.setText(quackCountPrefix + quackCount);

    // setup buttons
    for (int i = 0; i < maxDucks; i++) {
      if (i < model.currDuckCount()) {
        Duck d = model.getDuck(i);
        duckButtonArray[i].setEnabled(true);
        duckButtonArray[i].setBackground(d.getColor());
        duckButtonArray[i].setOpaque(true);
        duckButtonArray[i].setActionCommand(d.getQuack().toString());
      } else {
        duckButtonArray[i].setEnabled(false);
        duckButtonArray[i].setOpaque(false);
        duckButtonArray[i].setBackground(new JButton().getForeground());
      }
    }
  }
  public DuckSimButtonView(DuckSimModel modelArg) {
    model = modelArg;

    maxDucks = model.maxDuckCount();
    quackCountPrefix = "NUMBER OF QUACKS: ";
    quackCount = 0;

    quackTimer = new Timer(100, e -> quackTimerUpdate());
    quackCounter = 0;

    box = new Box(BoxLayout.Y_AXIS);
    header = new JPanel();
    duckrow1 = new JPanel();
    duckrow2 = new JPanel();
    duckButtonArray = new JButton[maxDucks];
    for (int i = 0; i < duckButtonArray.length; i++) {
      duckButtonArray[i] = new JButton();
      duckButtonArray[i].setIcon(new ImageIcon("assets/duck.png"));
      duckButtonArray[i].setEnabled(false);
      duckButtonArray[i].setBorderPainted(false);
      duckButtonArray[i].addActionListener(
          e -> {
            JButton button = (JButton) e.getSource();
            quackCounter = 0;
            quackTimer.start();
            quackCount++;
            button.setFont(new Font("Verdana", Font.BOLD, 24));
            button.setForeground(Color.WHITE);
            button.setText(e.getActionCommand());
            button.setHorizontalTextPosition(JButton.CENTER);
            button.setVerticalTextPosition(JButton.CENTER);
            updateButtons();
          });
    }
    createButton = new JButton("CREATE NEW DUCK");
    quackCountLabel = new JLabel(quackCountPrefix + quackCount);

    this.add(box);
    box.add(header);
    box.add(duckrow1);
    box.add(duckrow2);

    // add button and label to header
    header.add(createButton);
    createButton.addActionListener(
        e -> {
          MakeDuckDialog makeDuckDialog = new MakeDuckDialog(model, this);
          makeDuckDialog.setSize(300, 200);
          makeDuckDialog.setVisible(true);
        });
    header.add(quackCountLabel);

    // add buttons to duckrow1
    for (int i = 0; i < maxDucks / 2; i++) {
      duckrow1.add(duckButtonArray[i]);
    }

    // add buttons to duckrow2
    for (int i = maxDucks / 2; i < maxDucks; i++) {
      duckrow2.add(duckButtonArray[i]);
    }
  }